1 module directx.d3d12; 2 /*------------------------------------------------------------------------------------- 3 * 4 * Copyright (c) Microsoft Corporation 5 * 6 *-------------------------------------------------------------------------------------*/ 7 8 version(Windows): 9 version(Direct3D_12): 10 11 public import directx.dxgi; 12 public import directx.d3dcommon; 13 14 enum { 15 D3D12_16BIT_INDEX_STRIP_CUT_VALUE = 0xffff, 16 D3D12_32BIT_INDEX_STRIP_CUT_VALUE = 0xffffffff, 17 D3D12_8BIT_INDEX_STRIP_CUT_VALUE = 0xff, 18 19 D3D12_APPEND_ALIGNED_ELEMENT = 0xffffffff, 20 21 D3D12_ARRAY_AXIS_ADDRESS_RANGE_BIT_COUNT = 9, 22 23 D3D12_CLIP_OR_CULL_DISTANCE_COUNT = 8, 24 D3D12_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT = 2, 25 26 D3D12_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT = 14, 27 D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS = 4, 28 D3D12_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT = 32, 29 D3D12_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT = 15, 30 D3D12_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT = 16, 31 D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4, 32 D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT = 15, 33 D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1, 34 D3D12_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1, 35 36 D3D12_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT = 64, 37 38 D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS = 4, 39 D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT = 1, 40 D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST = 1, 41 D3D12_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS = 1, 42 43 D3D12_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT = 32, 44 45 D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS = 1, 46 D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT = 128, 47 D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST = 1, 48 D3D12_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS = 1, 49 D3D12_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT = 128, 50 51 D3D12_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS = 1, 52 D3D12_COMMONSHADER_SAMPLER_REGISTER_COUNT = 16, 53 D3D12_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST = 1, 54 D3D12_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS = 1, 55 D3D12_COMMONSHADER_SAMPLER_SLOT_COUNT = 16, 56 57 D3D12_COMMONSHADER_SUBROUTINE_NESTING_LIMIT = 32, 58 59 D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENTS = 4, 60 D3D12_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT = 32, 61 D3D12_COMMONSHADER_TEMP_REGISTER_COUNT = 4096, 62 D3D12_COMMONSHADER_TEMP_REGISTER_READS_PER_INST = 3, 63 D3D12_COMMONSHADER_TEMP_REGISTER_READ_PORTS = 3, 64 65 D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX = 10, 66 D3D12_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN = -10, 67 68 D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE = -8, 69 D3D12_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE = 7, 70 71 D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT = 256, 72 73 D3D12_CS_4_X_BUCKET00_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 256, 74 D3D12_CS_4_X_BUCKET00_MAX_NUM_THREADS_PER_GROUP = 64, 75 D3D12_CS_4_X_BUCKET01_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 240, 76 D3D12_CS_4_X_BUCKET01_MAX_NUM_THREADS_PER_GROUP = 68, 77 D3D12_CS_4_X_BUCKET02_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 224, 78 D3D12_CS_4_X_BUCKET02_MAX_NUM_THREADS_PER_GROUP = 72, 79 D3D12_CS_4_X_BUCKET03_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 208, 80 D3D12_CS_4_X_BUCKET03_MAX_NUM_THREADS_PER_GROUP = 76, 81 D3D12_CS_4_X_BUCKET04_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 192, 82 D3D12_CS_4_X_BUCKET04_MAX_NUM_THREADS_PER_GROUP = 84, 83 D3D12_CS_4_X_BUCKET05_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 176, 84 D3D12_CS_4_X_BUCKET05_MAX_NUM_THREADS_PER_GROUP = 92, 85 D3D12_CS_4_X_BUCKET06_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 160, 86 D3D12_CS_4_X_BUCKET06_MAX_NUM_THREADS_PER_GROUP = 100, 87 D3D12_CS_4_X_BUCKET07_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 144, 88 D3D12_CS_4_X_BUCKET07_MAX_NUM_THREADS_PER_GROUP = 112, 89 D3D12_CS_4_X_BUCKET08_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 128, 90 D3D12_CS_4_X_BUCKET08_MAX_NUM_THREADS_PER_GROUP = 128, 91 D3D12_CS_4_X_BUCKET09_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 112, 92 D3D12_CS_4_X_BUCKET09_MAX_NUM_THREADS_PER_GROUP = 144, 93 D3D12_CS_4_X_BUCKET10_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 96, 94 D3D12_CS_4_X_BUCKET10_MAX_NUM_THREADS_PER_GROUP = 168, 95 D3D12_CS_4_X_BUCKET11_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 80, 96 D3D12_CS_4_X_BUCKET11_MAX_NUM_THREADS_PER_GROUP = 204, 97 D3D12_CS_4_X_BUCKET12_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 64, 98 D3D12_CS_4_X_BUCKET12_MAX_NUM_THREADS_PER_GROUP = 256, 99 D3D12_CS_4_X_BUCKET13_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 48, 100 D3D12_CS_4_X_BUCKET13_MAX_NUM_THREADS_PER_GROUP = 340, 101 D3D12_CS_4_X_BUCKET14_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 32, 102 D3D12_CS_4_X_BUCKET14_MAX_NUM_THREADS_PER_GROUP = 512, 103 D3D12_CS_4_X_BUCKET15_MAX_BYTES_TGSM_WRITABLE_PER_THREAD = 16, 104 D3D12_CS_4_X_BUCKET15_MAX_NUM_THREADS_PER_GROUP = 768, 105 106 D3D12_CS_4_X_DISPATCH_MAX_THREAD_GROUPS_IN_Z_DIMENSION = 1, 107 D3D12_CS_4_X_RAW_UAV_BYTE_ALIGNMENT = 256, 108 D3D12_CS_4_X_THREAD_GROUP_MAX_THREADS_PER_GROUP = 768, 109 D3D12_CS_4_X_THREAD_GROUP_MAX_X = 768, 110 D3D12_CS_4_X_THREAD_GROUP_MAX_Y = 768, 111 D3D12_CS_4_X_UAV_REGISTER_COUNT = 1, 112 113 D3D12_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION = 65535, 114 115 D3D12_CS_TGSM_REGISTER_COUNT = 8192, 116 D3D12_CS_TGSM_REGISTER_READS_PER_INST = 1, 117 D3D12_CS_TGSM_RESOURCE_REGISTER_COMPONENTS = 1, 118 D3D12_CS_TGSM_RESOURCE_REGISTER_READ_PORTS = 1, 119 120 D3D12_CS_THREADGROUPID_REGISTER_COMPONENTS = 3, 121 D3D12_CS_THREADGROUPID_REGISTER_COUNT = 1, 122 123 D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS = 1, 124 D3D12_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT = 1, 125 126 D3D12_CS_THREADIDINGROUP_REGISTER_COMPONENTS = 3, 127 D3D12_CS_THREADIDINGROUP_REGISTER_COUNT = 1, 128 129 D3D12_CS_THREADID_REGISTER_COMPONENTS = 3, 130 D3D12_CS_THREADID_REGISTER_COUNT = 1, 131 132 D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP = 1024, 133 D3D12_CS_THREAD_GROUP_MAX_X = 1024, 134 D3D12_CS_THREAD_GROUP_MAX_Y = 1024, 135 D3D12_CS_THREAD_GROUP_MAX_Z = 64, 136 D3D12_CS_THREAD_GROUP_MIN_X = 1, 137 D3D12_CS_THREAD_GROUP_MIN_Y = 1, 138 D3D12_CS_THREAD_GROUP_MIN_Z = 1, 139 140 D3D12_CS_THREAD_LOCAL_TEMP_REGISTER_POOL = 16384, 141 142 D3D12_DEFAULT_BLEND_FACTOR_ALPHA = 10f, 143 D3D12_DEFAULT_BLEND_FACTOR_BLUE = 10f, 144 D3D12_DEFAULT_BLEND_FACTOR_GREEN = 10f, 145 D3D12_DEFAULT_BLEND_FACTOR_RED = 10f, 146 D3D12_DEFAULT_BORDER_COLOR_COMPONENT = 0f, 147 D3D12_DEFAULT_DEPTH_BIAS = 0, 148 149 D3D12_DEFAULT_DEPTH_BIAS_CLAMP = 0f, 150 D3D12_DEFAULT_MAX_ANISOTROPY = 16, 151 152 D3D12_DEFAULT_MIP_LOD_BIAS = 0f , 153 D3D12_DEFAULT_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 4194304, 154 155 D3D12_DEFAULT_RENDER_TARGET_ARRAY_INDEX = 0, 156 D3D12_DEFAULT_RESOURCE_PLACEMENT_ALIGNMENT = 65536, 157 D3D12_DEFAULT_SAMPLE_MASK = 0xffffffff, 158 159 D3D12_DEFAULT_SCISSOR_ENDX = 0, 160 D3D12_DEFAULT_SCISSOR_ENDY = 0, 161 D3D12_DEFAULT_SCISSOR_STARTX = 0, 162 D3D12_DEFAULT_SCISSOR_STARTY = 0, 163 164 D3D12_DEFAULT_SLOPE_SCALED_DEPTH_BIAS = 0f, 165 D3D12_DEFAULT_STENCIL_READ_MASK = 0xff, 166 D3D12_DEFAULT_STENCIL_REFERENCE = 0, 167 D3D12_DEFAULT_STENCIL_WRITE_MASK = 0xff, 168 169 D3D12_DEFAULT_VIEWPORT_AND_SCISSORRECT_INDEX = 0, 170 D3D12_DEFAULT_VIEWPORT_HEIGHT = 0, 171 D3D12_DEFAULT_VIEWPORT_MAX_DEPTH = 0f, 172 D3D12_DEFAULT_VIEWPORT_MIN_DEPTH = 0f, 173 D3D12_DEFAULT_VIEWPORT_TOPLEFTX = 0, 174 D3D12_DEFAULT_VIEWPORT_TOPLEFTY = 0, 175 D3D12_DEFAULT_VIEWPORT_WIDTH = 0, 176 177 D3D12_DESCRIPTOR_RANGE_OFFSET_APPEND = 0xffffffff, 178 179 D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_END = 0xfffffff7, 180 D3D12_DRIVER_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0, 181 182 D3D12_DS_INPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS= 3968, 183 D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENTS = 4, 184 D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32, 185 D3D12_DS_INPUT_CONTROL_POINT_REGISTER_COUNT = 32, 186 D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READS_PER_INST = 2, 187 D3D12_DS_INPUT_CONTROL_POINT_REGISTER_READ_PORTS = 1, 188 D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENTS= 3, 189 D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COMPONENT_BIT_COUNT = 32, 190 D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_COUNT = 1, 191 D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READS_PER_INST = 2, 192 D3D12_DS_INPUT_DOMAIN_POINT_REGISTER_READ_PORTS= 1, 193 D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4, 194 D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32, 195 D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_COUNT = 32, 196 D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2, 197 D3D12_DS_INPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1, 198 D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS= 1, 199 D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32, 200 D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1, 201 D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2, 202 D3D12_DS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS= 1, 203 D3D12_DS_OUTPUT_REGISTER_COMPONENTS = 4, 204 D3D12_DS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 205 D3D12_DS_OUTPUT_REGISTER_COUNT = 32, 206 207 D3D12_FLOAT16_FUSED_TOLERANCE_IN_ULP = 6, 208 //D3D12_FLOAT32_MAX = 3402823466e+38f, 209 D3D12_FLOAT32_TO_INTEGER_TOLERANCE_IN_ULP = 6f, 210 D3D12_FLOAT_TO_SRGB_EXPONENT_DENOMINATOR = 24f, 211 D3D12_FLOAT_TO_SRGB_EXPONENT_NUMERATOR = 10f, 212 D3D12_FLOAT_TO_SRGB_OFFSET = 55f, 213 D3D12_FLOAT_TO_SRGB_SCALE_1 = 1292f, 214 D3D12_FLOAT_TO_SRGB_SCALE_2 = 1055f, 215 D3D12_FLOAT_TO_SRGB_THRESHOLD = 31308f, 216 D3D12_FTOI_INSTRUCTION_MAX_INPUT = 2147483647999f, 217 D3D12_FTOI_INSTRUCTION_MIN_INPUT = -2147483648999f, 218 D3D12_FTOU_INSTRUCTION_MAX_INPUT = 4294967295999f, 219 D3D12_FTOU_INSTRUCTION_MIN_INPUT = 0f, 220 221 D3D12_GS_INPUT_INSTANCE_ID_READS_PER_INST = 2, 222 D3D12_GS_INPUT_INSTANCE_ID_READ_PORTS = 1, 223 D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENTS = 1, 224 D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT= 32, 225 D3D12_GS_INPUT_INSTANCE_ID_REGISTER_COUNT = 1, 226 D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENTS = 1, 227 D3D12_GS_INPUT_PRIM_CONST_REGISTER_COMPONENT_BIT_COUNT = 32, 228 D3D12_GS_INPUT_PRIM_CONST_REGISTER_COUNT = 1, 229 D3D12_GS_INPUT_PRIM_CONST_REGISTER_READS_PER_INST = 2, 230 D3D12_GS_INPUT_PRIM_CONST_REGISTER_READ_PORTS = 1, 231 D3D12_GS_INPUT_REGISTER_COMPONENTS = 4, 232 D3D12_GS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 233 D3D12_GS_INPUT_REGISTER_COUNT = 32, 234 D3D12_GS_INPUT_REGISTER_READS_PER_INST = 2, 235 D3D12_GS_INPUT_REGISTER_READ_PORTS = 1, 236 D3D12_GS_INPUT_REGISTER_VERTICES = 32, 237 D3D12_GS_MAX_INSTANCE_COUNT = 32, 238 D3D12_GS_MAX_OUTPUT_VERTEX_COUNT_ACROSS_INSTANCES = 1024, 239 D3D12_GS_OUTPUT_ELEMENTS = 32, 240 D3D12_GS_OUTPUT_REGISTER_COMPONENTS = 4, 241 D3D12_GS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 242 D3D12_GS_OUTPUT_REGISTER_COUNT = 32, 243 D3D12_HS_CONTROL_POINT_PHASE_INPUT_REGISTER_COUNT = 32, 244 D3D12_HS_CONTROL_POINT_PHASE_OUTPUT_REGISTER_COUNT = 32, 245 D3D12_HS_CONTROL_POINT_REGISTER_COMPONENTS = 4, 246 D3D12_HS_CONTROL_POINT_REGISTER_COMPONENT_BIT_COUNT = 32, 247 D3D12_HS_CONTROL_POINT_REGISTER_READS_PER_INST = 2, 248 D3D12_HS_CONTROL_POINT_REGISTER_READ_PORTS = 1, 249 D3D12_HS_FORK_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xffffffff, 250 D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENTS = 1, 251 D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32, 252 D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_COUNT = 1, 253 D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READS_PER_INST = 2, 254 D3D12_HS_INPUT_FORK_INSTANCE_ID_REGISTER_READ_PORTS = 1, 255 D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENTS = 1, 256 D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COMPONENT_BIT_COUNT = 32, 257 D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_COUNT = 1, 258 D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READS_PER_INST = 2, 259 D3D12_HS_INPUT_JOIN_INSTANCE_ID_REGISTER_READ_PORTS = 1, 260 D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENTS = 1, 261 D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COMPONENT_BIT_COUNT = 32, 262 D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_COUNT = 1, 263 D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READS_PER_INST = 2, 264 D3D12_HS_INPUT_PRIMITIVE_ID_REGISTER_READ_PORTS = 1, 265 D3D12_HS_JOIN_PHASE_INSTANCE_COUNT_UPPER_BOUND = 0xffffffff, 266 D3D12_HS_MAXTESSFACTOR_LOWER_BOUND = 10f, 267 D3D12_HS_MAXTESSFACTOR_UPPER_BOUND = 640f, 268 D3D12_HS_OUTPUT_CONTROL_POINTS_MAX_TOTAL_SCALARS = 3968, 269 D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENTS = 1, 270 D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COMPONENT_BIT_COUNT = 32, 271 D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_COUNT = 1, 272 D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READS_PER_INST = 2, 273 D3D12_HS_OUTPUT_CONTROL_POINT_ID_REGISTER_READ_PORTS = 1, 274 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENTS = 4, 275 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COMPONENT_BIT_COUNT = 32, 276 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_COUNT = 32, 277 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READS_PER_INST = 2, 278 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_READ_PORTS = 1, 279 D3D12_HS_OUTPUT_PATCH_CONSTANT_REGISTER_SCALAR_COMPONENTS = 128, 280 D3D12_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES = 0, 281 D3D12_IA_DEFAULT_PRIMITIVE_TOPOLOGY = 0, 282 D3D12_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES = 0, 283 D3D12_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT = 1, 284 D3D12_IA_INSTANCE_ID_BIT_COUNT = 32, 285 D3D12_IA_INTEGER_ARITHMETIC_BIT_COUNT = 32, 286 D3D12_IA_PATCH_MAX_CONTROL_POINT_COUNT = 32, 287 D3D12_IA_PRIMITIVE_ID_BIT_COUNT= 32, 288 D3D12_IA_VERTEX_ID_BIT_COUNT = 32, 289 D3D12_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT = 32, 290 D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS = 128, 291 D3D12_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT = 32, 292 D3D12_INTEGER_DIVIDE_BY_ZERO_QUOTIENT = 0xffffffff, 293 D3D12_INTEGER_DIVIDE_BY_ZERO_REMAINDER = 0xffffffff, 294 D3D12_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL = 0xffffffff, 295 D3D12_KEEP_UNORDERED_ACCESS_VIEWS = 0xffffffff, 296 D3D12_LINEAR_GAMMA = 10f, 297 D3D12_MAJOR_VERSION = 12, 298 D3D12_MAX_BORDER_COLOR_COMPONENT = 10f, 299 D3D12_MAX_DEPTH = 10f, 300 D3D12_MAX_LIVE_STATIC_SAMPLERS = 2032, 301 D3D12_MAX_MAXANISOTROPY = 16, 302 D3D12_MAX_MULTISAMPLE_SAMPLE_COUNT = 32, 303 //D3D12_MAX_POSITION_VALUE = 3402823466e+34f, 304 D3D12_MAX_ROOT_COST = 64, 305 D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_1 = 1000000, 306 D3D12_MAX_SHADER_VISIBLE_DESCRIPTOR_HEAP_SIZE_TIER_2 = 1000000, 307 D3D12_MAX_SHADER_VISIBLE_SAMPLER_HEAP_SIZE = 2048, 308 D3D12_MAX_TEXTURE_DIMENSION_2_TO_EXP = 17, 309 D3D12_MINOR_VERSION = 0, 310 D3D12_MIN_BORDER_COLOR_COMPONENT = 0f, 311 D3D12_MIN_DEPTH = 0f, 312 D3D12_MIN_MAXANISOTROPY = 0, 313 D3D12_MIP_LOD_BIAS_MAX = 1599f, 314 D3D12_MIP_LOD_BIAS_MIN = -160f, 315 D3D12_MIP_LOD_FRACTIONAL_BIT_COUNT = 8, 316 D3D12_MIP_LOD_RANGE_BIT_COUNT = 8, 317 D3D12_MULTISAMPLE_ANTIALIAS_LINE_WIDTH = 14f, 318 D3D12_NONSAMPLE_FETCH_OUT_OF_RANGE_ACCESS_RESULT = 0, 319 D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff, 320 D3D12_OS_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff8, 321 D3D12_PACKED_TILE = 0xffffffff, 322 D3D12_PIXEL_ADDRESS_RANGE_BIT_COUNT = 15, 323 D3D12_PRE_SCISSOR_PIXEL_ADDRESS_RANGE_BIT_COUNT = 16, 324 D3D12_PS_CS_UAV_REGISTER_COMPONENTS = 1, 325 D3D12_PS_CS_UAV_REGISTER_COUNT = 8, 326 D3D12_PS_CS_UAV_REGISTER_READS_PER_INST = 1, 327 D3D12_PS_CS_UAV_REGISTER_READ_PORTS = 1, 328 D3D12_PS_FRONTFACING_DEFAULT_VALUE = 0xffffffff, 329 D3D12_PS_FRONTFACING_FALSE_VALUE = 0, 330 D3D12_PS_FRONTFACING_TRUE_VALUE = 0xffffffff, 331 D3D12_PS_INPUT_REGISTER_COMPONENTS = 4, 332 D3D12_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 333 D3D12_PS_INPUT_REGISTER_COUNT = 32, 334 D3D12_PS_INPUT_REGISTER_READS_PER_INST = 2, 335 D3D12_PS_INPUT_REGISTER_READ_PORTS = 1, 336 D3D12_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT = 0f, 337 D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS = 1, 338 D3D12_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT = 32, 339 D3D12_PS_OUTPUT_DEPTH_REGISTER_COUNT = 1, 340 D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENTS = 1, 341 D3D12_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT = 32, 342 D3D12_PS_OUTPUT_MASK_REGISTER_COUNT = 1, 343 D3D12_PS_OUTPUT_REGISTER_COMPONENTS = 4, 344 D3D12_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 345 D3D12_PS_OUTPUT_REGISTER_COUNT = 8, 346 D3D12_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT = 5f, 347 D3D12_RAW_UAV_SRV_BYTE_ALIGNMENT = 16, 348 D3D12_REQ_BLEND_OBJECT_COUNT_PER_DEVICE = 4096, 349 D3D12_REQ_BUFFER_RESOURCE_TEXEL_COUNT_2_TO_EXP = 27, 350 D3D12_REQ_CONSTANT_BUFFER_ELEMENT_COUNT = 4096, 351 D3D12_REQ_DEPTH_STENCIL_OBJECT_COUNT_PER_DEVICE = 4096, 352 D3D12_REQ_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 32, 353 D3D12_REQ_DRAW_VERTEX_COUNT_2_TO_EXP = 32, 354 D3D12_REQ_FILTERING_HW_ADDRESSABLE_RESOURCE_DIMENSION = 16384, 355 D3D12_REQ_GS_INVOCATION_32BIT_OUTPUT_COMPONENT_LIMIT = 1024, 356 D3D12_REQ_IMMEDIATE_CONSTANT_BUFFER_ELEMENT_COUNT = 4096, 357 D3D12_REQ_MAXANISOTROPY = 16, 358 D3D12_REQ_MIP_LEVELS = 15, 359 D3D12_REQ_MULTI_ELEMENT_STRUCTURE_SIZE_IN_BYTES = 2048, 360 D3D12_REQ_RASTERIZER_OBJECT_COUNT_PER_DEVICE = 4096, 361 D3D12_REQ_RENDER_TO_BUFFER_WINDOW_WIDTH = 16384, 362 D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM = 128, 363 D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_B_TERM = 25f, 364 D3D12_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_C_TERM = 2048, 365 D3D12_REQ_RESOURCE_VIEW_COUNT_PER_DEVICE_2_TO_EXP = 20, 366 D3D12_REQ_SAMPLER_OBJECT_COUNT_PER_DEVICE = 4096, 367 D3D12_REQ_SUBRESOURCES = 30720, 368 D3D12_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION = 2048, 369 D3D12_REQ_TEXTURE1D_U_DIMENSION = 16384, 370 D3D12_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION = 2048, 371 D3D12_REQ_TEXTURE2D_U_OR_V_DIMENSION = 16384, 372 D3D12_REQ_TEXTURE3D_U_V_OR_W_DIMENSION = 2048, 373 D3D12_REQ_TEXTURECUBE_DIMENSION = 16384, 374 D3D12_RESINFO_INSTRUCTION_MISSING_COMPONENT_RETVAL = 0, 375 D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES = 0xffffffff, 376 D3D12_SHADER_MAJOR_VERSION = 5, 377 D3D12_SHADER_MAX_INSTANCES = 65535, 378 D3D12_SHADER_MAX_INTERFACES = 253, 379 D3D12_SHADER_MAX_INTERFACE_CALL_SITES = 4096, 380 D3D12_SHADER_MAX_TYPES = 65535, 381 D3D12_SHADER_MINOR_VERSION = 1, 382 D3D12_SHIFT_INSTRUCTION_PAD_VALUE = 0, 383 D3D12_SHIFT_INSTRUCTION_SHIFT_VALUE_BIT_COUNT = 5, 384 D3D12_SIMULTANEOUS_RENDER_TARGET_COUNT = 8, 385 D3D12_SMALL_MSAA_RESOURCE_PLACEMENT_ALIGNMENT = 65536, 386 D3D12_SMALL_RESOURCE_PLACEMENT_ALIGNMENT = 4096, 387 D3D12_SO_BUFFER_MAX_STRIDE_IN_BYTES = 2048, 388 D3D12_SO_BUFFER_MAX_WRITE_WINDOW_IN_BYTES = 512, 389 D3D12_SO_BUFFER_SLOT_COUNT = 4, 390 D3D12_SO_DDI_REGISTER_INDEX_DENOTING_GAP = 0xffffffff, 391 D3D12_SO_NO_RASTERIZED_STREAM = 0xffffffff, 392 D3D12_SO_OUTPUT_COMPONENT_COUNT = 128, 393 D3D12_SO_STREAM_COUNT = 4, 394 D3D12_SPEC_DATE_DAY = 14, 395 D3D12_SPEC_DATE_MONTH = 11, 396 D3D12_SPEC_DATE_YEAR = 2014, 397 D3D12_SPEC_VERSION = 116 , 398 D3D12_SRGB_GAMMA = 22f , 399 D3D12_SRGB_TO_FLOAT_DENOMINATOR_1 = 1292f , 400 D3D12_SRGB_TO_FLOAT_DENOMINATOR_2 = 1055f , 401 D3D12_SRGB_TO_FLOAT_EXPONENT = 24f, 402 D3D12_SRGB_TO_FLOAT_OFFSET = 55f, 403 D3D12_SRGB_TO_FLOAT_THRESHOLD = 4045f, 404 D3D12_SRGB_TO_FLOAT_TOLERANCE_IN_ULP = 5f, 405 D3D12_STANDARD_COMPONENT_BIT_COUNT = 32, 406 D3D12_STANDARD_COMPONENT_BIT_COUNT_DOUBLED = 64, 407 D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE = 4, 408 D3D12_STANDARD_PIXEL_COMPONENT_COUNT = 128, 409 D3D12_STANDARD_PIXEL_ELEMENT_COUNT = 32, 410 D3D12_STANDARD_VECTOR_SIZE = 4, 411 D3D12_STANDARD_VERTEX_ELEMENT_COUNT = 32, 412 D3D12_STANDARD_VERTEX_TOTAL_COMPONENT_COUNT = 64, 413 D3D12_SUBPIXEL_FRACTIONAL_BIT_COUNT = 8, 414 D3D12_SUBTEXEL_FRACTIONAL_BIT_COUNT = 8, 415 D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_END = 0xffffffff, 416 D3D12_SYSTEM_RESERVED_REGISTER_SPACE_VALUES_START = 0xfffffff0, 417 D3D12_TESSELLATOR_MAX_EVEN_TESSELLATION_FACTOR = 64, 418 D3D12_TESSELLATOR_MAX_ISOLINE_DENSITY_TESSELLATION_FACTOR = 64, 419 D3D12_TESSELLATOR_MAX_ODD_TESSELLATION_FACTOR = 63, 420 D3D12_TESSELLATOR_MAX_TESSELLATION_FACTOR = 64, 421 D3D12_TESSELLATOR_MIN_EVEN_TESSELLATION_FACTOR = 2, 422 D3D12_TESSELLATOR_MIN_ISOLINE_DENSITY_TESSELLATION_FACTOR = 1, 423 D3D12_TESSELLATOR_MIN_ODD_TESSELLATION_FACTOR = 1, 424 D3D12_TEXEL_ADDRESS_RANGE_BIT_COUNT = 16, 425 D3D12_TEXTURE_DATA_PITCH_ALIGNMENT = 256, 426 D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT = 512, 427 D3D12_TILED_RESOURCE_TILE_SIZE_IN_BYTES= 65536, 428 D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT = 4096, 429 D3D12_UAV_SLOT_COUNT = 64, 430 D3D12_UNBOUND_MEMORY_ACCESS_RESULT = 0, 431 D3D12_VIEWPORT_AND_SCISSORRECT_MAX_INDEX = 15, 432 D3D12_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE = 16, 433 D3D12_VIEWPORT_BOUNDS_MAX = 32767, 434 D3D12_VIEWPORT_BOUNDS_MIN = -32768, 435 D3D12_VS_INPUT_REGISTER_COMPONENTS = 4, 436 D3D12_VS_INPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 437 D3D12_VS_INPUT_REGISTER_COUNT = 32, 438 D3D12_VS_INPUT_REGISTER_READS_PER_INST = 2, 439 D3D12_VS_INPUT_REGISTER_READ_PORTS = 1, 440 D3D12_VS_OUTPUT_REGISTER_COMPONENTS = 4, 441 D3D12_VS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT = 32, 442 D3D12_VS_OUTPUT_REGISTER_COUNT = 32, 443 D3D12_WHQL_CONTEXT_COUNT_FOR_RESOURCE_LIMIT = 10, 444 D3D12_WHQL_DRAWINDEXED_INDEX_COUNT_2_TO_EXP = 25, 445 D3D12_WHQL_DRAW_VERTEX_COUNT_2_TO_EXP = 25 446 } 447 448 alias UINT64 D3D12_GPU_VIRTUAL_ADDRESS; 449 450 alias D3D12_COMMAND_LIST_TYPE = uint; 451 enum : D3D12_COMMAND_LIST_TYPE { 452 D3D12_COMMAND_LIST_TYPE_DIRECT = 0, 453 D3D12_COMMAND_LIST_TYPE_BUNDLE = 1, 454 D3D12_COMMAND_LIST_TYPE_COMPUTE = 2, 455 D3D12_COMMAND_LIST_TYPE_COPY = 3 456 } 457 458 alias D3D12_COMMAND_QUEUE_FLAGS = uint; 459 enum : D3D12_COMMAND_QUEUE_FLAGS { 460 D3D12_COMMAND_QUEUE_FLAG_NONE = 0, 461 D3D12_COMMAND_QUEUE_FLAG_DISABLE_GPU_TIMEOUT = 0x1 462 } 463 464 alias D3D12_COMMAND_QUEUE_PRIORITY = uint; 465 enum : D3D12_COMMAND_QUEUE_PRIORITY { 466 D3D12_COMMAND_QUEUE_PRIORITY_NORMAL = 0, 467 D3D12_COMMAND_QUEUE_PRIORITY_HIGH = 100 468 } 469 470 struct D3D12_COMMAND_QUEUE_DESC { 471 this(this) {} 472 D3D12_COMMAND_LIST_TYPE Type; 473 INT Priority; 474 D3D12_COMMAND_QUEUE_FLAGS Flags; 475 UINT NodeMask; 476 } 477 478 alias D3D12_PRIMITIVE_TOPOLOGY_TYPE = uint; 479 enum : D3D12_PRIMITIVE_TOPOLOGY_TYPE { 480 D3D12_PRIMITIVE_TOPOLOGY_TYPE_UNDEFINED = 0, 481 D3D12_PRIMITIVE_TOPOLOGY_TYPE_POINT = 1, 482 D3D12_PRIMITIVE_TOPOLOGY_TYPE_LINE = 2, 483 D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE = 3, 484 D3D12_PRIMITIVE_TOPOLOGY_TYPE_PATCH = 4 485 } 486 487 alias D3D12_INPUT_CLASSIFICATION = uint; 488 enum : D3D12_INPUT_CLASSIFICATION { 489 D3D12_INPUT_CLASSIFICATION_PER_VERTEX_DATA = 0, 490 D3D12_INPUT_CLASSIFICATION_PER_INSTANCE_DATA = 1 491 } 492 493 struct D3D12_INPUT_ELEMENT_DESC { 494 LPCSTR SemanticName; 495 UINT SemanticIndex; 496 DXGI_FORMAT Format; 497 UINT InputSlot; 498 UINT AlignedByteOffset; 499 D3D12_INPUT_CLASSIFICATION InputSlotClass; 500 UINT InstanceDataStepRate; 501 } 502 503 alias D3D12_FILL_MODE = uint; 504 enum : D3D12_FILL_MODE { 505 D3D12_FILL_MODE_WIREFRAME = 2, 506 D3D12_FILL_MODE_SOLID = 3 507 } 508 509 alias D3D_PRIMITIVE_TOPOLOGY D3D12_PRIMITIVE_TOPOLOGY; 510 alias D3D_PRIMITIVE D3D12_PRIMITIVE; 511 512 alias D3D12_CULL_MODE = uint; 513 enum : D3D12_CULL_MODE { 514 D3D12_CULL_MODE_NONE = 1, 515 D3D12_CULL_MODE_FRONT = 2, 516 D3D12_CULL_MODE_BACK = 3 517 } 518 519 struct D3D12_SO_DECLARATION_ENTRY { 520 UINT Stream; 521 LPCSTR SemanticName; 522 UINT SemanticIndex; 523 BYTE StartComponent; 524 BYTE ComponentCount; 525 BYTE OutputSlot; 526 } 527 528 struct D3D12_VIEWPORT { 529 FLOAT TopLeftX = 0.0f; 530 FLOAT TopLeftY = 0.0f; 531 FLOAT Width = 0.0f; 532 FLOAT Height = 0.0f; 533 FLOAT MinDepth = 0.0f; 534 FLOAT MaxDepth = 0.0f; 535 } 536 537 alias RECT D3D12_RECT; 538 539 struct D3D12_BOX { 540 UINT left; 541 UINT top; 542 UINT front; 543 UINT right; 544 UINT bottom; 545 UINT back; 546 } 547 548 alias D3D12_COMPARISON_FUNC = uint; 549 enum : D3D12_COMPARISON_FUNC { 550 D3D12_COMPARISON_FUNC_NEVER = 1, 551 D3D12_COMPARISON_FUNC_LESS = 2, 552 D3D12_COMPARISON_FUNC_EQUAL = 3, 553 D3D12_COMPARISON_FUNC_LESS_EQUAL = 4, 554 D3D12_COMPARISON_FUNC_GREATER = 5, 555 D3D12_COMPARISON_FUNC_NOT_EQUAL = 6, 556 D3D12_COMPARISON_FUNC_GREATER_EQUAL = 7, 557 D3D12_COMPARISON_FUNC_ALWAYS = 8 558 } 559 560 alias D3D12_DEPTH_WRITE_MASK = uint; 561 enum : D3D12_DEPTH_WRITE_MASK { 562 D3D12_DEPTH_WRITE_MASK_ZERO = 0, 563 D3D12_DEPTH_WRITE_MASK_ALL = 1 564 } 565 566 alias D3D12_STENCIL_OP = uint; 567 enum : D3D12_STENCIL_OP { 568 D3D12_STENCIL_OP_KEEP = 1, 569 D3D12_STENCIL_OP_ZERO = 2, 570 D3D12_STENCIL_OP_REPLACE = 3, 571 D3D12_STENCIL_OP_INCR_SAT = 4, 572 D3D12_STENCIL_OP_DECR_SAT = 5, 573 D3D12_STENCIL_OP_INVERT = 6, 574 D3D12_STENCIL_OP_INCR = 7, 575 D3D12_STENCIL_OP_DECR = 8 576 } 577 578 struct D3D12_DEPTH_STENCILOP_DESC { 579 D3D12_STENCIL_OP StencilFailOp; 580 D3D12_STENCIL_OP StencilDepthFailOp; 581 D3D12_STENCIL_OP StencilPassOp; 582 D3D12_COMPARISON_FUNC StencilFunc; 583 } 584 585 struct D3D12_DEPTH_STENCIL_DESC { 586 BOOL DepthEnable; 587 D3D12_DEPTH_WRITE_MASK DepthWriteMask; 588 D3D12_COMPARISON_FUNC DepthFunc; 589 BOOL StencilEnable; 590 UINT8 StencilReadMask; 591 UINT8 StencilWriteMask; 592 D3D12_DEPTH_STENCILOP_DESC FrontFace; 593 D3D12_DEPTH_STENCILOP_DESC BackFace; 594 } 595 596 alias D3D12_BLEND = uint; 597 enum : D3D12_BLEND { 598 D3D12_BLEND_ZERO = 1, 599 D3D12_BLEND_ONE = 2, 600 D3D12_BLEND_SRC_COLOR = 3, 601 D3D12_BLEND_INV_SRC_COLOR = 4, 602 D3D12_BLEND_SRC_ALPHA = 5, 603 D3D12_BLEND_INV_SRC_ALPHA = 6, 604 D3D12_BLEND_DEST_ALPHA = 7, 605 D3D12_BLEND_INV_DEST_ALPHA = 8, 606 D3D12_BLEND_DEST_COLOR = 9, 607 D3D12_BLEND_INV_DEST_COLOR = 10, 608 D3D12_BLEND_SRC_ALPHA_SAT = 11, 609 D3D12_BLEND_BLEND_FACTOR = 14, 610 D3D12_BLEND_INV_BLEND_FACTOR = 15, 611 D3D12_BLEND_SRC1_COLOR = 16, 612 D3D12_BLEND_INV_SRC1_COLOR = 17, 613 D3D12_BLEND_SRC1_ALPHA = 18, 614 D3D12_BLEND_INV_SRC1_ALPHA = 19 615 } 616 617 alias D3D12_BLEND_OP = uint; 618 enum : D3D12_BLEND_OP { 619 D3D12_BLEND_OP_ADD = 1, 620 D3D12_BLEND_OP_SUBTRACT = 2, 621 D3D12_BLEND_OP_REV_SUBTRACT = 3, 622 D3D12_BLEND_OP_MIN = 4, 623 D3D12_BLEND_OP_MAX = 5 624 } 625 626 alias D3D12_COLOR_WRITE_ENABLE = uint; 627 enum : D3D12_COLOR_WRITE_ENABLE { 628 D3D12_COLOR_WRITE_ENABLE_RED = 1, 629 D3D12_COLOR_WRITE_ENABLE_GREEN = 2, 630 D3D12_COLOR_WRITE_ENABLE_BLUE = 4, 631 D3D12_COLOR_WRITE_ENABLE_ALPHA = 8, 632 D3D12_COLOR_WRITE_ENABLE_ALL = D3D12_COLOR_WRITE_ENABLE_RED | 633 D3D12_COLOR_WRITE_ENABLE_GREEN | 634 D3D12_COLOR_WRITE_ENABLE_BLUE | 635 D3D12_COLOR_WRITE_ENABLE_ALPHA 636 } 637 638 alias D3D12_LOGIC_OP = uint; 639 enum : D3D12_LOGIC_OP { 640 D3D12_LOGIC_OP_CLEAR = 0, 641 D3D12_LOGIC_OP_SET = D3D12_LOGIC_OP_CLEAR + 1, 642 D3D12_LOGIC_OP_COPY = D3D12_LOGIC_OP_SET + 1, 643 D3D12_LOGIC_OP_COPY_INVERTED = D3D12_LOGIC_OP_COPY + 1, 644 D3D12_LOGIC_OP_NOOP = D3D12_LOGIC_OP_COPY_INVERTED + 1, 645 D3D12_LOGIC_OP_INVERT = D3D12_LOGIC_OP_NOOP + 1, 646 D3D12_LOGIC_OP_AND = D3D12_LOGIC_OP_INVERT + 1, 647 D3D12_LOGIC_OP_NAND = D3D12_LOGIC_OP_AND + 1, 648 D3D12_LOGIC_OP_OR = D3D12_LOGIC_OP_NAND + 1, 649 D3D12_LOGIC_OP_NOR = D3D12_LOGIC_OP_OR + 1, 650 D3D12_LOGIC_OP_XOR = D3D12_LOGIC_OP_NOR + 1, 651 D3D12_LOGIC_OP_EQUIV = D3D12_LOGIC_OP_XOR + 1, 652 D3D12_LOGIC_OP_AND_REVERSE = D3D12_LOGIC_OP_EQUIV + 1, 653 D3D12_LOGIC_OP_AND_INVERTED = D3D12_LOGIC_OP_AND_REVERSE + 1, 654 D3D12_LOGIC_OP_OR_REVERSE = D3D12_LOGIC_OP_AND_INVERTED + 1, 655 D3D12_LOGIC_OP_OR_INVERTED = D3D12_LOGIC_OP_OR_REVERSE + 1 656 } 657 658 struct D3D12_RENDER_TARGET_BLEND_DESC { 659 BOOL BlendEnable; 660 BOOL LogicOpEnable; 661 D3D12_BLEND SrcBlend; 662 D3D12_BLEND DestBlend; 663 D3D12_BLEND_OP BlendOp; 664 D3D12_BLEND SrcBlendAlpha; 665 D3D12_BLEND DestBlendAlpha; 666 D3D12_BLEND_OP BlendOpAlpha; 667 D3D12_LOGIC_OP LogicOp; 668 UINT8 RenderTargetWriteMask; 669 } 670 671 struct D3D12_BLEND_DESC { 672 BOOL AlphaToCoverageEnable; 673 BOOL IndependentBlendEnable; 674 D3D12_RENDER_TARGET_BLEND_DESC[8] RenderTarget; 675 } 676 677 alias D3D12_CONSERVATIVE_RASTERIZATION_MODE = uint; 678 enum : D3D12_CONSERVATIVE_RASTERIZATION_MODE { 679 D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF = 0, 680 D3D12_CONSERVATIVE_RASTERIZATION_MODE_ON = 1 681 } 682 683 // defaults from MSDN 684 struct D3D12_RASTERIZER_DESC { 685 D3D12_FILL_MODE FillMode = D3D12_FILL_MODE_SOLID; 686 D3D12_CULL_MODE CullMode = D3D12_CULL_MODE_BACK; 687 BOOL FrontCounterClockwise = FALSE; 688 INT DepthBias = 0; 689 FLOAT DepthBiasClamp = 0.0f; 690 FLOAT SlopeScaledDepthBias = 0.0f; 691 BOOL DepthClipEnable = TRUE; 692 BOOL MultisampleEnable = FALSE; 693 BOOL AntialiasedLineEnable = FALSE; 694 UINT ForcedSampleCount = 0; 695 D3D12_CONSERVATIVE_RASTERIZATION_MODE ConservativeRaster = D3D12_CONSERVATIVE_RASTERIZATION_MODE_OFF; 696 } 697 698 mixin(uuid!(ID3D12Object, "c4fec28f-7966-4e95-9f94-f431cb56c3b8")); 699 extern(C++) interface ID3D12Object : IUnknown { 700 HRESULT GetPrivateData(REFGUID guid, 701 UINT* pDataSize, 702 void* pData); 703 704 HRESULT SetPrivateData(REFGUID guid, 705 UINT DataSize, 706 const(void)* pData); 707 708 HRESULT SetPrivateDataInterface(REFGUID guid, 709 const IUnknown pData); 710 711 HRESULT SetName(LPCWSTR Name); 712 } 713 714 mixin(uuid!(ID3D12DeviceChild, "905db94b-a00c-4140-9df5-2b64ca9ea357")); 715 extern(C++) interface ID3D12DeviceChild : ID3D12Object { 716 HRESULT GetDevice(REFIID riid, 717 void** ppvDevice); 718 } 719 720 mixin(uuid!(ID3D12RootSignature, "c54a6b66-72df-4ee8-8be5-a946a1429214")); 721 extern(C++) interface ID3D12RootSignature : ID3D12DeviceChild {} 722 723 struct D3D12_SHADER_BYTECODE { 724 const(void)* pShaderBytecode; 725 SIZE_T BytecodeLength; 726 } 727 728 struct D3D12_STREAM_OUTPUT_DESC { 729 const(D3D12_SO_DECLARATION_ENTRY)* pSODeclaration; 730 UINT NumEntries; 731 const(UINT)* pBufferStrides; 732 UINT NumStrides; 733 UINT RasterizedStream; 734 } 735 736 struct D3D12_INPUT_LAYOUT_DESC { 737 const(D3D12_INPUT_ELEMENT_DESC)* pInputElementDescs; 738 UINT NumElements; 739 } 740 741 alias D3D12_INDEX_BUFFER_STRIP_CUT_VALUE = uint; 742 enum : D3D12_INDEX_BUFFER_STRIP_CUT_VALUE { 743 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_DISABLED = 0, 744 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFF = 1, 745 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE_0xFFFFFFFF = 2 746 } 747 748 struct D3D12_CACHED_PIPELINE_STATE { 749 const(void)* pCachedBlob; 750 SIZE_T CachedBlobSizeInBytes; 751 } 752 753 alias D3D12_PIPELINE_STATE_FLAGS = uint; 754 enum : D3D12_PIPELINE_STATE_FLAGS { 755 D3D12_PIPELINE_STATE_FLAG_NONE = 0, 756 D3D12_PIPELINE_STATE_FLAG_TOOL_DEBUG = 0x1 757 } 758 759 struct D3D12_GRAPHICS_PIPELINE_STATE_DESC { 760 ID3D12RootSignature pRootSignature; 761 D3D12_SHADER_BYTECODE VS; 762 D3D12_SHADER_BYTECODE PS; 763 D3D12_SHADER_BYTECODE DS; 764 D3D12_SHADER_BYTECODE HS; 765 D3D12_SHADER_BYTECODE GS; 766 D3D12_STREAM_OUTPUT_DESC StreamOutput; 767 D3D12_BLEND_DESC BlendState; 768 UINT SampleMask; 769 D3D12_RASTERIZER_DESC RasterizerState; 770 D3D12_DEPTH_STENCIL_DESC DepthStencilState; 771 D3D12_INPUT_LAYOUT_DESC InputLayout; 772 D3D12_INDEX_BUFFER_STRIP_CUT_VALUE IBStripCutValue; 773 D3D12_PRIMITIVE_TOPOLOGY_TYPE PrimitiveTopologyType; 774 UINT NumRenderTargets; 775 DXGI_FORMAT[8] RTVFormats; 776 DXGI_FORMAT DSVFormat; 777 DXGI_SAMPLE_DESC SampleDesc; 778 UINT NodeMask; 779 D3D12_CACHED_PIPELINE_STATE CachedPSO; 780 D3D12_PIPELINE_STATE_FLAGS Flags; 781 } 782 783 struct D3D12_COMPUTE_PIPELINE_STATE_DESC { 784 ID3D12RootSignature pRootSignature; 785 D3D12_SHADER_BYTECODE CS; 786 UINT NodeMask; 787 D3D12_CACHED_PIPELINE_STATE CachedPSO; 788 D3D12_PIPELINE_STATE_FLAGS Flags; 789 } 790 791 alias D3D12_FEATURE = uint; 792 enum : D3D12_FEATURE { 793 D3D12_FEATURE_D3D12_OPTIONS = 0, 794 D3D12_FEATURE_ARCHITECTURE = D3D12_FEATURE_D3D12_OPTIONS + 1, 795 D3D12_FEATURE_FEATURE_LEVELS = D3D12_FEATURE_ARCHITECTURE + 1, 796 D3D12_FEATURE_FORMAT_SUPPORT = D3D12_FEATURE_FEATURE_LEVELS + 1, 797 D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS = D3D12_FEATURE_FORMAT_SUPPORT + 1, 798 D3D12_FEATURE_FORMAT_INFO = D3D12_FEATURE_MULTISAMPLE_QUALITY_LEVELS + 1, 799 D3D12_FEATURE_GPU_VIRTUAL_ADDRESS_SUPPORT = D3D12_FEATURE_FORMAT_INFO + 1 800 } 801 802 alias D3D12_SHADER_MIN_PRECISION_SUPPORT = uint; 803 enum : D3D12_SHADER_MIN_PRECISION_SUPPORT { 804 D3D12_SHADER_MIN_PRECISION_SUPPORT_NONE = 0, 805 D3D12_SHADER_MIN_PRECISION_SUPPORT_10_BIT = 0x1, 806 D3D12_SHADER_MIN_PRECISION_SUPPORT_16_BIT = 0x2 807 } 808 809 alias D3D12_TILED_RESOURCES_TIER = uint; 810 enum : D3D12_TILED_RESOURCES_TIER { 811 D3D12_TILED_RESOURCES_TIER_NOT_SUPPORTED = 0, 812 D3D12_TILED_RESOURCES_TIER_1 = 1, 813 D3D12_TILED_RESOURCES_TIER_2 = 2, 814 D3D12_TILED_RESOURCES_TIER_3 = 3 815 } 816 817 alias D3D12_RESOURCE_BINDING_TIER = uint; 818 enum : D3D12_RESOURCE_BINDING_TIER { 819 D3D12_RESOURCE_BINDING_TIER_1 = 1, 820 D3D12_RESOURCE_BINDING_TIER_2 = 2, 821 D3D12_RESOURCE_BINDING_TIER_3 = 3 822 } 823 824 alias D3D12_CONSERVATIVE_RASTERIZATION_TIER = uint; 825 enum : D3D12_CONSERVATIVE_RASTERIZATION_TIER { 826 D3D12_CONSERVATIVE_RASTERIZATION_TIER_NOT_SUPPORTED = 0, 827 D3D12_CONSERVATIVE_RASTERIZATION_TIER_1 = 1, 828 D3D12_CONSERVATIVE_RASTERIZATION_TIER_2 = 2, 829 D3D12_CONSERVATIVE_RASTERIZATION_TIER_3 = 3 830 } 831 832 alias D3D12_FORMAT_SUPPORT1 = uint; 833 enum : D3D12_FORMAT_SUPPORT1 { 834 D3D12_FORMAT_SUPPORT1_NONE = 0, 835 D3D12_FORMAT_SUPPORT1_BUFFER = 0x1, 836 D3D12_FORMAT_SUPPORT1_IA_VERTEX_BUFFER = 0x2, 837 D3D12_FORMAT_SUPPORT1_IA_INDEX_BUFFER = 0x4, 838 D3D12_FORMAT_SUPPORT1_SO_BUFFER = 0x8, 839 D3D12_FORMAT_SUPPORT1_TEXTURE1D = 0x10, 840 D3D12_FORMAT_SUPPORT1_TEXTURE2D = 0x20, 841 D3D12_FORMAT_SUPPORT1_TEXTURE3D = 0x40, 842 D3D12_FORMAT_SUPPORT1_TEXTURECUBE = 0x80, 843 D3D12_FORMAT_SUPPORT1_SHADER_LOAD = 0x100, 844 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE = 0x200, 845 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_COMPARISON = 0x400, 846 D3D12_FORMAT_SUPPORT1_SHADER_SAMPLE_MONO_TEXT = 0x800, 847 D3D12_FORMAT_SUPPORT1_MIP = 0x1000, 848 D3D12_FORMAT_SUPPORT1_RENDER_TARGET = 0x4000, 849 D3D12_FORMAT_SUPPORT1_BLENDABLE = 0x8000, 850 D3D12_FORMAT_SUPPORT1_DEPTH_STENCIL = 0x10000, 851 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RESOLVE = 0x40000, 852 D3D12_FORMAT_SUPPORT1_DISPLAY = 0x80000, 853 D3D12_FORMAT_SUPPORT1_CAST_WITHIN_BIT_LAYOUT = 0x100000, 854 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_RENDERTARGET = 0x200000, 855 D3D12_FORMAT_SUPPORT1_MULTISAMPLE_LOAD = 0x400000, 856 D3D12_FORMAT_SUPPORT1_SHADER_GATHER = 0x800000, 857 D3D12_FORMAT_SUPPORT1_BACK_BUFFER_CAST = 0x1000000, 858 D3D12_FORMAT_SUPPORT1_TYPED_UNORDERED_ACCESS_VIEW = 0x2000000, 859 D3D12_FORMAT_SUPPORT1_SHADER_GATHER_COMPARISON = 0x4000000, 860 D3D12_FORMAT_SUPPORT1_DECODER_OUTPUT = 0x8000000, 861 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_OUTPUT = 0x10000000, 862 D3D12_FORMAT_SUPPORT1_VIDEO_PROCESSOR_INPUT = 0x20000000, 863 D3D12_FORMAT_SUPPORT1_VIDEO_ENCODER = 0x40000000 864 } 865 866 alias D3D12_FORMAT_SUPPORT2 = uint; 867 enum : D3D12_FORMAT_SUPPORT2 { 868 D3D12_FORMAT_SUPPORT2_NONE = 0, 869 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_ADD = 0x1, 870 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS = 0x2, 871 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE = 0x4, 872 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE = 0x8, 873 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX = 0x10, 874 D3D12_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX = 0x20, 875 D3D12_FORMAT_SUPPORT2_UAV_TYPED_LOAD = 0x40, 876 D3D12_FORMAT_SUPPORT2_UAV_TYPED_STORE = 0x80, 877 D3D12_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP = 0x100, 878 D3D12_FORMAT_SUPPORT2_TILED = 0x200, 879 D3D12_FORMAT_SUPPORT2_MULTIPLANE_OVERLAY = 0x4000 880 } 881 882 alias D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS = uint; 883 enum : D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS { 884 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_NONE = 0, 885 D3D12_MULTISAMPLE_QUALITY_LEVELS_FLAG_TILED_RESOURCE = 0x1 886 } 887 888 alias D3D12_CROSS_NODE_SHARING_TIER = uint; 889 enum : D3D12_CROSS_NODE_SHARING_TIER { 890 D3D12_CROSS_NODE_SHARING_TIER_NOT_SUPPORTED = 0, 891 D3D12_CROSS_NODE_SHARING_TIER_1_EMULATED = 1, 892 D3D12_CROSS_NODE_SHARING_TIER_1 = 2, 893 D3D12_CROSS_NODE_SHARING_TIER_2 = 3 894 } 895 896 alias D3D12_RESOURCE_HEAP_TIER = uint; 897 enum : D3D12_RESOURCE_HEAP_TIER { 898 D3D12_RESOURCE_HEAP_TIER_1 = 1, 899 D3D12_RESOURCE_HEAP_TIER_2 = 2 900 } 901 902 struct D3D12_FEATURE_DATA_D3D12_OPTIONS { 903 BOOL DoublePrecisionFloatShaderOps; 904 BOOL OutputMergerLogicOp; 905 D3D12_SHADER_MIN_PRECISION_SUPPORT MinPrecisionSupport; 906 D3D12_TILED_RESOURCES_TIER TiledResourcesTier; 907 D3D12_RESOURCE_BINDING_TIER ResourceBindingTier; 908 BOOL PSSpecifiedStencilRefSupported; 909 BOOL TypedUAVLoadAdditionalFormats; 910 BOOL ROVsSupported; 911 D3D12_CONSERVATIVE_RASTERIZATION_TIER ConservativeRasterizationTier; 912 UINT MaxGPUVirtualAddressBitsPerResource; 913 BOOL StandardSwizzle64KBSupported; 914 D3D12_CROSS_NODE_SHARING_TIER CrossNodeSharingTier; 915 BOOL CrossAdapterRowMajorTextureSupported; 916 BOOL VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportedWithoutGSEmulation; 917 D3D12_RESOURCE_HEAP_TIER ResourceHeapTier; 918 } 919 920 struct D3D12_FEATURE_DATA_ARCHITECTURE { 921 UINT NodeIndex; 922 BOOL TileBasedRenderer; 923 BOOL UMA; 924 BOOL CacheCoherentUMA; 925 } 926 927 struct D3D12_FEATURE_DATA_FEATURE_LEVELS { 928 UINT NumFeatureLevels; 929 const(D3D_FEATURE_LEVEL)* pFeatureLevelsRequested; 930 D3D_FEATURE_LEVEL MaxSupportedFeatureLevel; 931 } 932 933 struct D3D12_FEATURE_DATA_FORMAT_SUPPORT { 934 DXGI_FORMAT Format; 935 D3D12_FORMAT_SUPPORT1 Support1; 936 D3D12_FORMAT_SUPPORT2 Support2; 937 } 938 939 struct D3D12_FEATURE_DATA_MULTISAMPLE_QUALITY_LEVELS { 940 DXGI_FORMAT Format; 941 UINT SampleCount; 942 D3D12_MULTISAMPLE_QUALITY_LEVEL_FLAGS Flags; 943 UINT NumQualityLevels; 944 } 945 946 struct D3D12_FEATURE_DATA_FORMAT_INFO { 947 DXGI_FORMAT Format; 948 UINT8 PlaneCount; 949 } 950 951 struct D3D12_FEATURE_DATA_GPU_VIRTUAL_ADDRESS_SUPPORT { 952 UINT MaxGPUVirtualAddressBitsPerResource; 953 UINT MaxGPUVirtualAddressBitsPerProcess; 954 } 955 956 struct D3D12_RESOURCE_ALLOCATION_INFO { 957 this(this) {} 958 UINT64 SizeInBytes; 959 UINT64 Alignment; 960 } 961 962 alias D3D12_HEAP_TYPE = uint; 963 enum : D3D12_HEAP_TYPE { 964 D3D12_HEAP_TYPE_DEFAULT = 1, 965 D3D12_HEAP_TYPE_UPLOAD = 2, 966 D3D12_HEAP_TYPE_READBACK = 3, 967 D3D12_HEAP_TYPE_CUSTOM = 4 968 } 969 970 alias D3D12_CPU_PAGE_PROPERTY = uint; 971 enum : D3D12_CPU_PAGE_PROPERTY { 972 D3D12_CPU_PAGE_PROPERTY_UNKNOWN = 0, 973 D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE = 1, 974 D3D12_CPU_PAGE_PROPERTY_WRITE_COMBINE = 2, 975 D3D12_CPU_PAGE_PROPERTY_WRITE_BACK = 3 976 } 977 978 alias D3D12_MEMORY_POOL = uint; 979 enum : D3D12_MEMORY_POOL { 980 D3D12_MEMORY_POOL_UNKNOWN = 0, 981 D3D12_MEMORY_POOL_L0 = 1, 982 D3D12_MEMORY_POOL_L1 = 2 983 } 984 985 struct D3D12_HEAP_PROPERTIES { 986 this(this) {} 987 D3D12_HEAP_TYPE Type; 988 D3D12_CPU_PAGE_PROPERTY CPUPageProperty; 989 D3D12_MEMORY_POOL MemoryPoolPreference; 990 UINT CreationNodeMask; 991 UINT VisibleNodeMask; 992 } 993 994 alias D3D12_HEAP_FLAGS = uint; 995 enum : D3D12_HEAP_FLAGS { 996 D3D12_HEAP_FLAG_NONE = 0, 997 D3D12_HEAP_FLAG_SHARED = 0x1, 998 D3D12_HEAP_FLAG_DENY_BUFFERS = 0x4, 999 D3D12_HEAP_FLAG_ALLOW_DISPLAY = 0x8, 1000 D3D12_HEAP_FLAG_SHARED_CROSS_ADAPTER = 0x20, 1001 D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES = 0x40, 1002 D3D12_HEAP_FLAG_DENY_NON_RT_DS_TEXTURES = 0x80, 1003 D3D12_HEAP_FLAG_ALLOW_ALL_BUFFERS_AND_TEXTURES = 0, 1004 D3D12_HEAP_FLAG_ALLOW_ONLY_BUFFERS = 0xc0, 1005 D3D12_HEAP_FLAG_ALLOW_ONLY_NON_RT_DS_TEXTURES = 0x44, 1006 D3D12_HEAP_FLAG_ALLOW_ONLY_RT_DS_TEXTURES = 0x84 1007 } 1008 1009 struct D3D12_HEAP_DESC { 1010 this(this) {} 1011 UINT64 SizeInBytes; 1012 D3D12_HEAP_PROPERTIES Properties; 1013 UINT64 Alignment; 1014 D3D12_HEAP_FLAGS Flags; 1015 } 1016 1017 alias D3D12_RESOURCE_DIMENSION = uint; 1018 enum : D3D12_RESOURCE_DIMENSION { 1019 D3D12_RESOURCE_DIMENSION_UNKNOWN = 0, 1020 D3D12_RESOURCE_DIMENSION_BUFFER = 1, 1021 D3D12_RESOURCE_DIMENSION_TEXTURE1D = 2, 1022 D3D12_RESOURCE_DIMENSION_TEXTURE2D = 3, 1023 D3D12_RESOURCE_DIMENSION_TEXTURE3D = 4 1024 } 1025 1026 alias D3D12_TEXTURE_LAYOUT = uint; 1027 enum : D3D12_TEXTURE_LAYOUT { 1028 D3D12_TEXTURE_LAYOUT_UNKNOWN = 0, 1029 D3D12_TEXTURE_LAYOUT_ROW_MAJOR = 1, 1030 D3D12_TEXTURE_LAYOUT_64KB_UNDEFINED_SWIZZLE = 2, 1031 D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE = 3 1032 } 1033 1034 alias D3D12_RESOURCE_FLAGS = uint; 1035 enum : D3D12_RESOURCE_FLAGS { 1036 D3D12_RESOURCE_FLAG_NONE = 0, 1037 D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1, 1038 D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2, 1039 D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4, 1040 D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8, 1041 D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10, 1042 D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20 1043 } 1044 1045 struct D3D12_RESOURCE_DESC { 1046 this(this) {} 1047 D3D12_RESOURCE_DIMENSION Dimension; 1048 UINT64 Alignment; 1049 UINT64 Width; 1050 UINT Height; 1051 UINT16 DepthOrArraySize; 1052 UINT16 MipLevels; 1053 DXGI_FORMAT Format; 1054 DXGI_SAMPLE_DESC SampleDesc; 1055 D3D12_TEXTURE_LAYOUT Layout; 1056 D3D12_RESOURCE_FLAGS Flags; 1057 } 1058 1059 struct D3D12_DEPTH_STENCIL_VALUE { 1060 FLOAT Depth = 0.0f; 1061 UINT8 Stencil; 1062 } 1063 1064 struct D3D12_CLEAR_VALUE { 1065 DXGI_FORMAT Format; 1066 union { 1067 FLOAT[4] Color; 1068 D3D12_DEPTH_STENCIL_VALUE DepthStencil; 1069 } 1070 } 1071 1072 struct D3D12_RANGE { 1073 SIZE_T Begin; 1074 SIZE_T End; 1075 } 1076 1077 struct D3D12_SUBRESOURCE_INFO { 1078 UINT64 Offset; 1079 UINT RowPitch; 1080 UINT DepthPitch; 1081 } 1082 1083 struct D3D12_TILED_RESOURCE_COORDINATE { 1084 UINT X; 1085 UINT Y; 1086 UINT Z; 1087 UINT Subresource; 1088 } 1089 1090 struct D3D12_TILE_REGION_SIZE { 1091 UINT NumTiles; 1092 BOOL UseBox; 1093 UINT Width; 1094 UINT16 Height; 1095 UINT16 Depth; 1096 } 1097 1098 alias D3D12_TILE_RANGE_FLAGS = uint; 1099 enum : D3D12_TILE_RANGE_FLAGS { 1100 D3D12_TILE_RANGE_FLAG_NONE = 0, 1101 D3D12_TILE_RANGE_FLAG_NULL = 1, 1102 D3D12_TILE_RANGE_FLAG_SKIP = 2, 1103 D3D12_TILE_RANGE_FLAG_REUSE_SINGLE_TILE = 4 1104 } 1105 1106 struct D3D12_SUBRESOURCE_TILING { 1107 UINT WidthInTiles; 1108 UINT16 HeightInTiles; 1109 UINT16 DepthInTiles; 1110 UINT StartTileIndexInOverallResource; 1111 } 1112 1113 struct D3D12_TILE_SHAPE { 1114 UINT WidthInTexels; 1115 UINT HeightInTexels; 1116 UINT DepthInTexels; 1117 } 1118 1119 struct D3D12_PACKED_MIP_INFO { 1120 UINT8 NumStandardMips; 1121 UINT8 NumPackedMips; 1122 UINT NumTilesForPackedMips; 1123 UINT StartTileIndexInOverallResource; 1124 } 1125 1126 alias D3D12_TILE_MAPPING_FLAGS = uint; 1127 enum : D3D12_TILE_MAPPING_FLAGS { 1128 D3D12_TILE_MAPPING_FLAG_NONE = 0, 1129 D3D12_TILE_MAPPING_FLAG_NO_HAZARD = 0x1 1130 } 1131 1132 alias D3D12_TILE_COPY_FLAGS = uint; 1133 enum : D3D12_TILE_COPY_FLAGS { 1134 D3D12_TILE_COPY_FLAG_NONE = 0, 1135 D3D12_TILE_COPY_FLAG_NO_HAZARD = 0x1, 1136 D3D12_TILE_COPY_FLAG_LINEAR_BUFFER_TO_SWIZZLED_TILED_RESOURCE = 0x2, 1137 D3D12_TILE_COPY_FLAG_SWIZZLED_TILED_RESOURCE_TO_LINEAR_BUFFER = 0x4 1138 } 1139 1140 alias D3D12_RESOURCE_STATES = uint; 1141 enum : D3D12_RESOURCE_STATES { 1142 D3D12_RESOURCE_STATE_COMMON = 0, 1143 D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1, 1144 D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2, 1145 D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4, 1146 D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8, 1147 D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10, 1148 D3D12_RESOURCE_STATE_DEPTH_READ = 0x20, 1149 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40, 1150 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80, 1151 D3D12_RESOURCE_STATE_STREAM_OUT = 0x100, 1152 D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200, 1153 D3D12_RESOURCE_STATE_COPY_DEST = 0x400, 1154 D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800, 1155 D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000, 1156 D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000, 1157 D3D12_RESOURCE_STATE_GENERIC_READ = 0x1 | 0x2 | 0x40 | 0x80 | 0x200 | 0x800, 1158 D3D12_RESOURCE_STATE_PRESENT = 0, 1159 D3D12_RESOURCE_STATE_PREDICATION = 0x200 1160 } 1161 1162 alias D3D12_RESOURCE_BARRIER_TYPE = uint; 1163 enum : D3D12_RESOURCE_BARRIER_TYPE { 1164 D3D12_RESOURCE_BARRIER_TYPE_TRANSITION = 0, 1165 D3D12_RESOURCE_BARRIER_TYPE_ALIASING = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION + 1, 1166 D3D12_RESOURCE_BARRIER_TYPE_UAV = D3D12_RESOURCE_BARRIER_TYPE_ALIASING + 1 1167 } 1168 1169 1170 struct D3D12_RESOURCE_TRANSITION_BARRIER { 1171 ID3D12Resource pResource; 1172 UINT Subresource; 1173 D3D12_RESOURCE_STATES StateBefore; 1174 D3D12_RESOURCE_STATES StateAfter; 1175 } 1176 1177 struct D3D12_RESOURCE_ALIASING_BARRIER { 1178 ID3D12Resource pResourceBefore; 1179 ID3D12Resource pResourceAfter; 1180 } 1181 1182 struct D3D12_RESOURCE_UAV_BARRIER { 1183 ID3D12Resource pResource; 1184 } 1185 1186 alias D3D12_RESOURCE_BARRIER_FLAGS = uint; 1187 enum : D3D12_RESOURCE_BARRIER_FLAGS { 1188 D3D12_RESOURCE_BARRIER_FLAG_NONE = 0, 1189 D3D12_RESOURCE_BARRIER_FLAG_BEGIN_ONLY = 0x1, 1190 D3D12_RESOURCE_BARRIER_FLAG_END_ONLY = 0x2 1191 } 1192 1193 struct D3D12_RESOURCE_BARRIER { 1194 D3D12_RESOURCE_BARRIER_TYPE Type; 1195 D3D12_RESOURCE_BARRIER_FLAGS Flags; 1196 union { 1197 D3D12_RESOURCE_TRANSITION_BARRIER Transition; 1198 D3D12_RESOURCE_ALIASING_BARRIER Aliasing; 1199 D3D12_RESOURCE_UAV_BARRIER UAV; 1200 } 1201 } 1202 1203 struct D3D12_SUBRESOURCE_FOOTPRINT { 1204 DXGI_FORMAT Format; 1205 UINT Width; 1206 UINT Height; 1207 UINT Depth; 1208 UINT RowPitch; 1209 } 1210 1211 struct D3D12_PLACED_SUBRESOURCE_FOOTPRINT { 1212 UINT64 Offset; 1213 D3D12_SUBRESOURCE_FOOTPRINT Footprint; 1214 } 1215 1216 alias D3D12_TEXTURE_COPY_TYPE = uint; 1217 enum : D3D12_TEXTURE_COPY_TYPE { 1218 D3D12_TEXTURE_COPY_TYPE_SUBRESOURCE_INDEX = 0, 1219 D3D12_TEXTURE_COPY_TYPE_PLACED_FOOTPRINT = 1 1220 } 1221 1222 struct D3D12_TEXTURE_COPY_LOCATION { 1223 ID3D12Resource pResource; 1224 D3D12_TEXTURE_COPY_TYPE Type; 1225 union { 1226 D3D12_PLACED_SUBRESOURCE_FOOTPRINT PlacedFootprint; 1227 UINT SubresourceIndex; 1228 } 1229 } 1230 1231 alias D3D12_SHADER_COMPONENT_MAPPING = uint; 1232 enum : D3D12_SHADER_COMPONENT_MAPPING { 1233 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0 = 0, 1234 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1 = 1, 1235 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2 = 2, 1236 D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3 = 3, 1237 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0 = 4, 1238 D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1 = 5 1239 } 1240 1241 enum { 1242 D3D12_SHADER_COMPONENT_MAPPING_MASK = 0x7, 1243 D3D12_SHADER_COMPONENT_MAPPING_SHIFT = 3, 1244 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES = 1245 1 << (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 4), 1246 D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING = 1247 D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(0, 1, 2, 3) 1248 } 1249 1250 pure nothrow @nogc @safe { 1251 uint D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING(uint Src0, uint Src1, 1252 uint Src2, uint Src3) 1253 { 1254 return ( (Src0 & D3D12_SHADER_COMPONENT_MAPPING_MASK) | 1255 ((Src1 & D3D12_SHADER_COMPONENT_MAPPING_MASK) << 1256 D3D12_SHADER_COMPONENT_MAPPING_SHIFT) | 1257 ((Src2 & D3D12_SHADER_COMPONENT_MAPPING_MASK) << 1258 (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 2)) | 1259 ((Src3 & D3D12_SHADER_COMPONENT_MAPPING_MASK) << 1260 (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * 3)) | 1261 D3D12_SHADER_COMPONENT_MAPPING_ALWAYS_SET_BIT_AVOIDING_ZEROMEM_MISTAKES); 1262 } 1263 1264 uint D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(uint ComponentToExtract, 1265 uint Mapping) 1266 { 1267 return cast(D3D12_SHADER_COMPONENT_MAPPING) 1268 (Mapping >> 1269 (D3D12_SHADER_COMPONENT_MAPPING_SHIFT * ComponentToExtract) & 1270 D3D12_SHADER_COMPONENT_MAPPING_MASK); 1271 } 1272 } 1273 1274 alias D3D12_BUFFER_SRV_FLAGS = uint; 1275 enum : D3D12_BUFFER_SRV_FLAGS { 1276 D3D12_BUFFER_SRV_FLAG_NONE = 0, 1277 D3D12_BUFFER_SRV_FLAG_RAW = 0x1 1278 } 1279 1280 struct D3D12_BUFFER_SRV { 1281 UINT64 FirstElement; 1282 UINT NumElements; 1283 UINT StructureByteStride; 1284 D3D12_BUFFER_SRV_FLAGS Flags; 1285 } 1286 1287 struct D3D12_TEX1D_SRV { 1288 UINT MostDetailedMip; 1289 UINT MipLevels; 1290 FLOAT ResourceMinLODClamp = 0.0f; 1291 } 1292 1293 struct D3D12_TEX1D_ARRAY_SRV { 1294 UINT MostDetailedMip; 1295 UINT MipLevels; 1296 UINT FirstArraySlice; 1297 UINT ArraySize; 1298 FLOAT ResourceMinLODClamp = 0.0f; 1299 } 1300 1301 struct D3D12_TEX2D_SRV { 1302 UINT MostDetailedMip; 1303 UINT MipLevels; 1304 UINT PlaneSlice; 1305 FLOAT ResourceMinLODClamp = 0.0f; 1306 } 1307 1308 struct D3D12_TEX2D_ARRAY_SRV { 1309 UINT MostDetailedMip; 1310 UINT MipLevels; 1311 UINT FirstArraySlice; 1312 UINT ArraySize; 1313 UINT PlaneSlice; 1314 FLOAT ResourceMinLODClamp = 0.0f; 1315 } 1316 1317 struct D3D12_TEX3D_SRV { 1318 UINT MostDetailedMip; 1319 UINT MipLevels; 1320 FLOAT ResourceMinLODClamp = 0.0f; 1321 } 1322 1323 struct D3D12_TEXCUBE_SRV { 1324 UINT MostDetailedMip; 1325 UINT MipLevels; 1326 FLOAT ResourceMinLODClamp = 0.0f; 1327 } 1328 1329 struct D3D12_TEXCUBE_ARRAY_SRV { 1330 UINT MostDetailedMip; 1331 UINT MipLevels; 1332 UINT First2DArrayFace; 1333 UINT NumCubes; 1334 FLOAT ResourceMinLODClamp = 0.0f; 1335 } 1336 1337 struct D3D12_TEX2DMS_SRV { 1338 UINT UnusedField_NothingToDefine; 1339 } 1340 1341 struct D3D12_TEX2DMS_ARRAY_SRV { 1342 UINT FirstArraySlice; 1343 UINT ArraySize; 1344 } 1345 1346 alias D3D12_SRV_DIMENSION = uint; 1347 enum : D3D12_SRV_DIMENSION { 1348 D3D12_SRV_DIMENSION_UNKNOWN = 0, 1349 D3D12_SRV_DIMENSION_BUFFER = 1, 1350 D3D12_SRV_DIMENSION_TEXTURE1D = 2, 1351 D3D12_SRV_DIMENSION_TEXTURE1DARRAY = 3, 1352 D3D12_SRV_DIMENSION_TEXTURE2D = 4, 1353 D3D12_SRV_DIMENSION_TEXTURE2DARRAY = 5, 1354 D3D12_SRV_DIMENSION_TEXTURE2DMS = 6, 1355 D3D12_SRV_DIMENSION_TEXTURE2DMSARRAY = 7, 1356 D3D12_SRV_DIMENSION_TEXTURE3D = 8, 1357 D3D12_SRV_DIMENSION_TEXTURECUBE = 9, 1358 D3D12_SRV_DIMENSION_TEXTURECUBEARRAY = 10 1359 } 1360 1361 struct D3D12_SHADER_RESOURCE_VIEW_DESC { 1362 DXGI_FORMAT Format; 1363 D3D12_SRV_DIMENSION ViewDimension; 1364 UINT Shader4ComponentMapping; 1365 union 1366 { 1367 D3D12_BUFFER_SRV Buffer; 1368 D3D12_TEX1D_SRV Texture1D; 1369 D3D12_TEX1D_ARRAY_SRV Texture1DArray; 1370 D3D12_TEX2D_SRV Texture2D; 1371 D3D12_TEX2D_ARRAY_SRV Texture2DArray; 1372 D3D12_TEX2DMS_SRV Texture2DMS; 1373 D3D12_TEX2DMS_ARRAY_SRV Texture2DMSArray; 1374 D3D12_TEX3D_SRV Texture3D; 1375 D3D12_TEXCUBE_SRV TextureCube; 1376 D3D12_TEXCUBE_ARRAY_SRV TextureCubeArray; 1377 } 1378 } 1379 1380 struct D3D12_CONSTANT_BUFFER_VIEW_DESC { 1381 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 1382 UINT SizeInBytes; 1383 } 1384 1385 alias D3D12_FILTER = uint; 1386 enum : D3D12_FILTER { 1387 D3D12_FILTER_MIN_MAG_MIP_POINT = 0, 1388 D3D12_FILTER_MIN_MAG_POINT_MIP_LINEAR = 0x1, 1389 D3D12_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x4, 1390 D3D12_FILTER_MIN_POINT_MAG_MIP_LINEAR = 0x5, 1391 D3D12_FILTER_MIN_LINEAR_MAG_MIP_POINT = 0x10, 1392 D3D12_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x11, 1393 D3D12_FILTER_MIN_MAG_LINEAR_MIP_POINT = 0x14, 1394 D3D12_FILTER_MIN_MAG_MIP_LINEAR = 0x15, 1395 D3D12_FILTER_ANISOTROPIC = 0x55, 1396 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_POINT = 0x80, 1397 D3D12_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR = 0x81, 1398 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x84, 1399 D3D12_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR = 0x85, 1400 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT = 0x90, 1401 D3D12_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x91, 1402 D3D12_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT = 0x94, 1403 D3D12_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR = 0x95, 1404 D3D12_FILTER_COMPARISON_ANISOTROPIC = 0xd5, 1405 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_POINT = 0x100, 1406 D3D12_FILTER_MINIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x101, 1407 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x104, 1408 D3D12_FILTER_MINIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x105, 1409 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x110, 1410 D3D12_FILTER_MINIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x111, 1411 D3D12_FILTER_MINIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x114, 1412 D3D12_FILTER_MINIMUM_MIN_MAG_MIP_LINEAR = 0x115, 1413 D3D12_FILTER_MINIMUM_ANISOTROPIC = 0x155, 1414 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_POINT = 0x180, 1415 D3D12_FILTER_MAXIMUM_MIN_MAG_POINT_MIP_LINEAR = 0x181, 1416 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_LINEAR_MIP_POINT = 0x184, 1417 D3D12_FILTER_MAXIMUM_MIN_POINT_MAG_MIP_LINEAR = 0x185, 1418 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_MIP_POINT = 0x190, 1419 D3D12_FILTER_MAXIMUM_MIN_LINEAR_MAG_POINT_MIP_LINEAR = 0x191, 1420 D3D12_FILTER_MAXIMUM_MIN_MAG_LINEAR_MIP_POINT = 0x194, 1421 D3D12_FILTER_MAXIMUM_MIN_MAG_MIP_LINEAR = 0x195, 1422 D3D12_FILTER_MAXIMUM_ANISOTROPIC = 0x1d5 1423 } 1424 1425 alias D3D12_FILTER_TYPE = uint; 1426 enum : D3D12_FILTER_TYPE { 1427 D3D12_FILTER_TYPE_POINT = 0, 1428 D3D12_FILTER_TYPE_LINEAR = 1 1429 } 1430 1431 alias D3D12_FILTER_REDUCTION_TYPE = uint; 1432 enum : D3D12_FILTER_REDUCTION_TYPE { 1433 D3D12_FILTER_REDUCTION_TYPE_STANDARD = 0, 1434 D3D12_FILTER_REDUCTION_TYPE_COMPARISON = 1, 1435 D3D12_FILTER_REDUCTION_TYPE_MINIMUM = 2, 1436 D3D12_FILTER_REDUCTION_TYPE_MAXIMUM = 3 1437 } 1438 1439 enum { 1440 D3D12_FILTER_REDUCTION_TYPE_MASK = 0x3, 1441 D3D12_FILTER_REDUCTION_TYPE_SHIFT = 7, 1442 D3D12_FILTER_TYPE_MASK = 0x3, 1443 D3D12_MIN_FILTER_SHIFT = 4, 1444 D3D12_MAG_FILTER_SHIFT = 2, 1445 D3D12_MIP_FILTER_SHIFT = 0, 1446 D3D12_ANISOTROPIC_FILTERING_BIT = 0x40 1447 } 1448 1449 pure nothrow @safe @nogc { 1450 D3D12_FILTER D3D12_ENCODE_BASIC_FILTER(D3D12_FILTER_TYPE min, 1451 D3D12_FILTER_TYPE mag, 1452 D3D12_FILTER_TYPE mip, 1453 D3D12_FILTER_REDUCTION_TYPE reduction) 1454 { 1455 return cast(D3D12_FILTER) 1456 (((min & D3D12_FILTER_TYPE_MASK) << D3D12_MIN_FILTER_SHIFT ) | 1457 ((mag & D3D12_FILTER_TYPE_MASK) << D3D12_MAG_FILTER_SHIFT ) | 1458 ((mip & D3D12_FILTER_TYPE_MASK) << D3D12_MIP_FILTER_SHIFT ) | 1459 ((reduction & D3D12_FILTER_REDUCTION_TYPE_MASK) << 1460 D3D12_FILTER_REDUCTION_TYPE_SHIFT)); 1461 } 1462 1463 D3D12_FILTER D3D12_ENCODE_ANISOTROPIC_FILTER(D3D12_FILTER_REDUCTION_TYPE reduction) { 1464 return cast(D3D12_FILTER) 1465 (D3D12_ANISOTROPIC_FILTERING_BIT | 1466 D3D12_ENCODE_BASIC_FILTER(D3D12_FILTER_TYPE_LINEAR, 1467 D3D12_FILTER_TYPE_LINEAR, 1468 D3D12_FILTER_TYPE_LINEAR, 1469 reduction)); 1470 } 1471 1472 D3D12_FILTER_TYPE D3D12_DECODE_MIN_FILTER(D3D12_FILTER D3D12Filter) { 1473 return cast(D3D12_FILTER_TYPE) 1474 ((D3D12Filter >> D3D12_MIN_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK); 1475 } 1476 1477 D3D12_FILTER_TYPE D3D12_DECODE_MAG_FILTER(D3D12_FILTER D3D12Filter) { 1478 return cast(D3D12_FILTER_TYPE) 1479 ((D3D12Filter >> D3D12_MAG_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK); 1480 } 1481 1482 D3D12_FILTER_TYPE D3D12_DECODE_MIP_FILTER(D3D12_FILTER D3D12Filter) { 1483 return cast( D3D12_FILTER_TYPE ) 1484 ((D3D12Filter >> D3D12_MIP_FILTER_SHIFT) & D3D12_FILTER_TYPE_MASK); 1485 } 1486 1487 D3D12_FILTER_REDUCTION_TYPE D3D12_DECODE_FILTER_REDUCTION(D3D12_FILTER D3D12Filter) { 1488 return cast(D3D12_FILTER_REDUCTION_TYPE) 1489 ((D3D12Filter >> D3D12_FILTER_REDUCTION_TYPE_SHIFT) & 1490 D3D12_FILTER_REDUCTION_TYPE_MASK); 1491 } 1492 1493 bool D3D12_DECODE_IS_COMPARISON_FILTER(D3D12_FILTER D3D12Filter) { 1494 return D3D12_DECODE_FILTER_REDUCTION(D3D12Filter) == 1495 D3D12_FILTER_REDUCTION_TYPE_COMPARISON; 1496 } 1497 1498 bool D3D12_DECODE_IS_ANISOTROPIC_FILTER(D3D12_FILTER D3D12Filter) { 1499 return ((D3D12Filter & D3D12_ANISOTROPIC_FILTERING_BIT) && 1500 (D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIN_FILTER(D3D12Filter)) && 1501 (D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MAG_FILTER(D3D12Filter)) && 1502 (D3D12_FILTER_TYPE_LINEAR == D3D12_DECODE_MIP_FILTER(D3D12Filter))); 1503 } 1504 } 1505 1506 alias D3D12_TEXTURE_ADDRESS_MODE = uint; 1507 enum : D3D12_TEXTURE_ADDRESS_MODE { 1508 D3D12_TEXTURE_ADDRESS_MODE_WRAP = 1, 1509 D3D12_TEXTURE_ADDRESS_MODE_MIRROR = 2, 1510 D3D12_TEXTURE_ADDRESS_MODE_CLAMP = 3, 1511 D3D12_TEXTURE_ADDRESS_MODE_BORDER = 4, 1512 D3D12_TEXTURE_ADDRESS_MODE_MIRROR_ONCE = 5 1513 } 1514 1515 struct D3D12_SAMPLER_DESC { 1516 D3D12_FILTER Filter; 1517 D3D12_TEXTURE_ADDRESS_MODE AddressU; 1518 D3D12_TEXTURE_ADDRESS_MODE AddressV; 1519 D3D12_TEXTURE_ADDRESS_MODE AddressW; 1520 FLOAT MipLODBias = 0.0f; 1521 UINT MaxAnisotropy; 1522 D3D12_COMPARISON_FUNC ComparisonFunc; 1523 FLOAT[4] BorderColor = [ 0.0f, 0.0f, 0.0f, 1.0f ]; 1524 FLOAT MinLOD = 0.0f; 1525 FLOAT MaxLOD = 0.0f; 1526 } 1527 1528 alias D3D12_BUFFER_UAV_FLAGS = uint; 1529 enum : D3D12_BUFFER_UAV_FLAGS { 1530 D3D12_BUFFER_UAV_FLAG_NONE = 0, 1531 D3D12_BUFFER_UAV_FLAG_RAW = 0x1 1532 } 1533 1534 struct D3D12_BUFFER_UAV { 1535 UINT64 FirstElement; 1536 UINT NumElements; 1537 UINT StructureByteStride; 1538 UINT64 CounterOffsetInBytes; 1539 D3D12_BUFFER_UAV_FLAGS Flags; 1540 } 1541 1542 struct D3D12_TEX1D_UAV { 1543 UINT MipSlice; 1544 } 1545 1546 struct D3D12_TEX1D_ARRAY_UAV { 1547 UINT MipSlice; 1548 UINT FirstArraySlice; 1549 UINT ArraySize; 1550 } 1551 1552 struct D3D12_TEX2D_UAV { 1553 UINT MipSlice; 1554 UINT PlaneSlice; 1555 } 1556 1557 struct D3D12_TEX2D_ARRAY_UAV { 1558 UINT MipSlice; 1559 UINT FirstArraySlice; 1560 UINT ArraySize; 1561 UINT PlaneSlice; 1562 } 1563 1564 struct D3D12_TEX3D_UAV { 1565 UINT MipSlice; 1566 UINT FirstWSlice; 1567 UINT WSize; 1568 } 1569 1570 alias D3D12_UAV_DIMENSION = uint; 1571 enum : D3D12_UAV_DIMENSION { 1572 D3D12_UAV_DIMENSION_UNKNOWN = 0, 1573 D3D12_UAV_DIMENSION_BUFFER = 1, 1574 D3D12_UAV_DIMENSION_TEXTURE1D = 2, 1575 D3D12_UAV_DIMENSION_TEXTURE1DARRAY = 3, 1576 D3D12_UAV_DIMENSION_TEXTURE2D = 4, 1577 D3D12_UAV_DIMENSION_TEXTURE2DARRAY = 5, 1578 D3D12_UAV_DIMENSION_TEXTURE3D = 8 1579 } 1580 1581 struct D3D12_UNORDERED_ACCESS_VIEW_DESC { 1582 DXGI_FORMAT Format; 1583 D3D12_UAV_DIMENSION ViewDimension; 1584 union { 1585 D3D12_BUFFER_UAV Buffer; 1586 D3D12_TEX1D_UAV Texture1D; 1587 D3D12_TEX1D_ARRAY_UAV Texture1DArray; 1588 D3D12_TEX2D_UAV Texture2D; 1589 D3D12_TEX2D_ARRAY_UAV Texture2DArray; 1590 D3D12_TEX3D_UAV Texture3D; 1591 } 1592 } 1593 1594 struct D3D12_BUFFER_RTV { 1595 UINT64 FirstElement; 1596 UINT NumElements; 1597 } 1598 1599 struct D3D12_TEX1D_RTV { 1600 UINT MipSlice; 1601 } 1602 1603 struct D3D12_TEX1D_ARRAY_RTV { 1604 UINT MipSlice; 1605 UINT FirstArraySlice; 1606 UINT ArraySize; 1607 } 1608 1609 struct D3D12_TEX2D_RTV { 1610 UINT MipSlice; 1611 UINT PlaneSlice; 1612 } 1613 1614 struct D3D12_TEX2DMS_RTV { 1615 UINT UnusedField_NothingToDefine; 1616 } 1617 1618 struct D3D12_TEX2D_ARRAY_RTV { 1619 UINT MipSlice; 1620 UINT FirstArraySlice; 1621 UINT ArraySize; 1622 UINT PlaneSlice; 1623 } 1624 1625 struct D3D12_TEX2DMS_ARRAY_RTV { 1626 UINT FirstArraySlice; 1627 UINT ArraySize; 1628 } 1629 1630 struct D3D12_TEX3D_RTV { 1631 UINT MipSlice; 1632 UINT FirstWSlice; 1633 UINT WSize; 1634 } 1635 1636 alias D3D12_RTV_DIMENSION = uint; 1637 enum : D3D12_RTV_DIMENSION { 1638 D3D12_RTV_DIMENSION_UNKNOWN = 0, 1639 D3D12_RTV_DIMENSION_BUFFER = 1, 1640 D3D12_RTV_DIMENSION_TEXTURE1D = 2, 1641 D3D12_RTV_DIMENSION_TEXTURE1DARRAY = 3, 1642 D3D12_RTV_DIMENSION_TEXTURE2D = 4, 1643 D3D12_RTV_DIMENSION_TEXTURE2DARRAY = 5, 1644 D3D12_RTV_DIMENSION_TEXTURE2DMS = 6, 1645 D3D12_RTV_DIMENSION_TEXTURE2DMSARRAY = 7, 1646 D3D12_RTV_DIMENSION_TEXTURE3D = 8 1647 } 1648 1649 struct D3D12_RENDER_TARGET_VIEW_DESC { 1650 DXGI_FORMAT Format; 1651 D3D12_RTV_DIMENSION ViewDimension; 1652 union 1653 { 1654 D3D12_BUFFER_RTV Buffer; 1655 D3D12_TEX1D_RTV Texture1D; 1656 D3D12_TEX1D_ARRAY_RTV Texture1DArray; 1657 D3D12_TEX2D_RTV Texture2D; 1658 D3D12_TEX2D_ARRAY_RTV Texture2DArray; 1659 D3D12_TEX2DMS_RTV Texture2DMS; 1660 D3D12_TEX2DMS_ARRAY_RTV Texture2DMSArray; 1661 D3D12_TEX3D_RTV Texture3D; 1662 } 1663 } 1664 1665 struct D3D12_TEX1D_DSV { 1666 UINT MipSlice; 1667 } 1668 1669 struct D3D12_TEX1D_ARRAY_DSV { 1670 UINT MipSlice; 1671 UINT FirstArraySlice; 1672 UINT ArraySize; 1673 } 1674 1675 struct D3D12_TEX2D_DSV { 1676 UINT MipSlice; 1677 } 1678 1679 struct D3D12_TEX2D_ARRAY_DSV { 1680 UINT MipSlice; 1681 UINT FirstArraySlice; 1682 UINT ArraySize; 1683 } 1684 1685 struct D3D12_TEX2DMS_DSV { 1686 UINT UnusedField_NothingToDefine; 1687 } 1688 1689 struct D3D12_TEX2DMS_ARRAY_DSV { 1690 UINT FirstArraySlice; 1691 UINT ArraySize; 1692 } 1693 1694 alias D3D12_DSV_FLAGS = uint; 1695 enum : D3D12_DSV_FLAGS { 1696 D3D12_DSV_FLAG_NONE = 0, 1697 D3D12_DSV_FLAG_READ_ONLY_DEPTH = 0x1, 1698 D3D12_DSV_FLAG_READ_ONLY_STENCIL = 0x2 1699 } 1700 1701 alias D3D12_DSV_DIMENSION = uint; 1702 enum : D3D12_DSV_DIMENSION { 1703 D3D12_DSV_DIMENSION_UNKNOWN = 0, 1704 D3D12_DSV_DIMENSION_TEXTURE1D = 1, 1705 D3D12_DSV_DIMENSION_TEXTURE1DARRAY = 2, 1706 D3D12_DSV_DIMENSION_TEXTURE2D = 3, 1707 D3D12_DSV_DIMENSION_TEXTURE2DARRAY = 4, 1708 D3D12_DSV_DIMENSION_TEXTURE2DMS = 5, 1709 D3D12_DSV_DIMENSION_TEXTURE2DMSARRAY = 6 1710 } 1711 1712 struct D3D12_DEPTH_STENCIL_VIEW_DESC { 1713 DXGI_FORMAT Format; 1714 D3D12_DSV_DIMENSION ViewDimension; 1715 D3D12_DSV_FLAGS Flags; 1716 union 1717 { 1718 D3D12_TEX1D_DSV Texture1D; 1719 D3D12_TEX1D_ARRAY_DSV Texture1DArray; 1720 D3D12_TEX2D_DSV Texture2D; 1721 D3D12_TEX2D_ARRAY_DSV Texture2DArray; 1722 D3D12_TEX2DMS_DSV Texture2DMS; 1723 D3D12_TEX2DMS_ARRAY_DSV Texture2DMSArray; 1724 } 1725 } 1726 1727 alias D3D12_CLEAR_FLAGS = uint; 1728 enum : D3D12_CLEAR_FLAGS { 1729 D3D12_CLEAR_FLAG_DEPTH = 0x1, 1730 D3D12_CLEAR_FLAG_STENCIL = 0x2 1731 } 1732 1733 alias D3D12_FENCE_FLAGS = uint; 1734 enum : D3D12_FENCE_FLAGS { 1735 D3D12_FENCE_FLAG_NONE = 0, 1736 D3D12_FENCE_FLAG_SHARED = 0x1, 1737 D3D12_FENCE_FLAG_SHARED_CROSS_ADAPTER = 0x2 1738 } 1739 1740 alias D3D12_DESCRIPTOR_HEAP_TYPE = uint; 1741 enum : D3D12_DESCRIPTOR_HEAP_TYPE { 1742 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV = 0, 1743 D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER = D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV + 1, 1744 D3D12_DESCRIPTOR_HEAP_TYPE_RTV = D3D12_DESCRIPTOR_HEAP_TYPE_SAMPLER + 1, 1745 D3D12_DESCRIPTOR_HEAP_TYPE_DSV = D3D12_DESCRIPTOR_HEAP_TYPE_RTV + 1, 1746 D3D12_DESCRIPTOR_HEAP_TYPE_NUM_TYPES = D3D12_DESCRIPTOR_HEAP_TYPE_DSV + 1 1747 } 1748 1749 alias D3D12_DESCRIPTOR_HEAP_FLAGS = uint; 1750 enum : D3D12_DESCRIPTOR_HEAP_FLAGS { 1751 D3D12_DESCRIPTOR_HEAP_FLAG_NONE = 0, 1752 D3D12_DESCRIPTOR_HEAP_FLAG_SHADER_VISIBLE = 0x1 1753 } 1754 1755 struct D3D12_DESCRIPTOR_HEAP_DESC { 1756 this(this) {} 1757 D3D12_DESCRIPTOR_HEAP_TYPE Type; 1758 UINT NumDescriptors; 1759 D3D12_DESCRIPTOR_HEAP_FLAGS Flags; 1760 UINT NodeMask; 1761 } 1762 1763 alias D3D12_DESCRIPTOR_RANGE_TYPE = uint; 1764 enum : D3D12_DESCRIPTOR_RANGE_TYPE { 1765 D3D12_DESCRIPTOR_RANGE_TYPE_SRV = 0, 1766 D3D12_DESCRIPTOR_RANGE_TYPE_UAV = D3D12_DESCRIPTOR_RANGE_TYPE_SRV + 1, 1767 D3D12_DESCRIPTOR_RANGE_TYPE_CBV = D3D12_DESCRIPTOR_RANGE_TYPE_UAV + 1, 1768 D3D12_DESCRIPTOR_RANGE_TYPE_SAMPLER = D3D12_DESCRIPTOR_RANGE_TYPE_CBV + 1 1769 } 1770 1771 struct D3D12_DESCRIPTOR_RANGE { 1772 D3D12_DESCRIPTOR_RANGE_TYPE RangeType; 1773 UINT NumDescriptors; 1774 UINT BaseShaderRegister; 1775 UINT RegisterSpace; 1776 UINT OffsetInDescriptorsFromTableStart; 1777 } 1778 1779 struct D3D12_ROOT_DESCRIPTOR_TABLE { 1780 UINT NumDescriptorRanges; 1781 const(D3D12_DESCRIPTOR_RANGE)* pDescriptorRanges; 1782 } 1783 1784 struct D3D12_ROOT_CONSTANTS { 1785 UINT ShaderRegister; 1786 UINT RegisterSpace; 1787 UINT Num32BitValues; 1788 } 1789 1790 struct D3D12_ROOT_DESCRIPTOR { 1791 UINT ShaderRegister; 1792 UINT RegisterSpace; 1793 } 1794 1795 alias D3D12_SHADER_VISIBILITY = uint; 1796 enum : D3D12_SHADER_VISIBILITY { 1797 D3D12_SHADER_VISIBILITY_ALL = 0, 1798 D3D12_SHADER_VISIBILITY_VERTEX = 1, 1799 D3D12_SHADER_VISIBILITY_HULL = 2, 1800 D3D12_SHADER_VISIBILITY_DOMAIN = 3, 1801 D3D12_SHADER_VISIBILITY_GEOMETRY = 4, 1802 D3D12_SHADER_VISIBILITY_PIXEL = 5 1803 } 1804 1805 alias D3D12_ROOT_PARAMETER_TYPE = uint; 1806 enum : D3D12_ROOT_PARAMETER_TYPE { 1807 D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE = 0, 1808 D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS = D3D12_ROOT_PARAMETER_TYPE_DESCRIPTOR_TABLE + 1, 1809 D3D12_ROOT_PARAMETER_TYPE_CBV = D3D12_ROOT_PARAMETER_TYPE_32BIT_CONSTANTS + 1, 1810 D3D12_ROOT_PARAMETER_TYPE_SRV = D3D12_ROOT_PARAMETER_TYPE_CBV + 1, 1811 D3D12_ROOT_PARAMETER_TYPE_UAV = D3D12_ROOT_PARAMETER_TYPE_SRV + 1 1812 } 1813 1814 struct D3D12_ROOT_PARAMETER { 1815 D3D12_ROOT_PARAMETER_TYPE ParameterType; 1816 union { 1817 D3D12_ROOT_DESCRIPTOR_TABLE DescriptorTable; 1818 D3D12_ROOT_CONSTANTS Constants; 1819 D3D12_ROOT_DESCRIPTOR Descriptor; 1820 } 1821 D3D12_SHADER_VISIBILITY ShaderVisibility; 1822 } 1823 1824 alias D3D12_ROOT_SIGNATURE_FLAGS = uint; 1825 enum : D3D12_ROOT_SIGNATURE_FLAGS { 1826 D3D12_ROOT_SIGNATURE_FLAG_NONE = 0, 1827 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT = 0x1, 1828 D3D12_ROOT_SIGNATURE_FLAG_DENY_VERTEX_SHADER_ROOT_ACCESS = 0x2, 1829 D3D12_ROOT_SIGNATURE_FLAG_DENY_HULL_SHADER_ROOT_ACCESS = 0x4, 1830 D3D12_ROOT_SIGNATURE_FLAG_DENY_DOMAIN_SHADER_ROOT_ACCESS = 0x8, 1831 D3D12_ROOT_SIGNATURE_FLAG_DENY_GEOMETRY_SHADER_ROOT_ACCESS = 0x10, 1832 D3D12_ROOT_SIGNATURE_FLAG_DENY_PIXEL_SHADER_ROOT_ACCESS = 0x20, 1833 D3D12_ROOT_SIGNATURE_FLAG_ALLOW_STREAM_OUTPUT = 0x40 1834 } 1835 1836 alias D3D12_STATIC_BORDER_COLOR = uint; 1837 enum : D3D12_STATIC_BORDER_COLOR { 1838 D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK = 0, 1839 D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK = D3D12_STATIC_BORDER_COLOR_TRANSPARENT_BLACK + 1, 1840 D3D12_STATIC_BORDER_COLOR_OPAQUE_WHITE = D3D12_STATIC_BORDER_COLOR_OPAQUE_BLACK + 1 1841 } 1842 1843 struct D3D12_STATIC_SAMPLER_DESC { 1844 D3D12_FILTER Filter; 1845 D3D12_TEXTURE_ADDRESS_MODE AddressU; 1846 D3D12_TEXTURE_ADDRESS_MODE AddressV; 1847 D3D12_TEXTURE_ADDRESS_MODE AddressW; 1848 FLOAT MipLODBias = 0.0f; 1849 UINT MaxAnisotropy; 1850 D3D12_COMPARISON_FUNC ComparisonFunc; 1851 D3D12_STATIC_BORDER_COLOR BorderColor; 1852 FLOAT MinLOD = 0.0f; 1853 FLOAT MaxLOD = 0.0f; 1854 UINT ShaderRegister; 1855 UINT RegisterSpace; 1856 D3D12_SHADER_VISIBILITY ShaderVisibility; 1857 } 1858 1859 struct D3D12_ROOT_SIGNATURE_DESC { 1860 UINT NumParameters; 1861 const(D3D12_ROOT_PARAMETER)* pParameters; 1862 UINT NumStaticSamplers; 1863 const(D3D12_STATIC_SAMPLER_DESC)* pStaticSamplers; 1864 D3D12_ROOT_SIGNATURE_FLAGS Flags; 1865 } 1866 1867 alias D3D_ROOT_SIGNATURE_VERSION = uint; 1868 enum : D3D_ROOT_SIGNATURE_VERSION { 1869 D3D_ROOT_SIGNATURE_VERSION_1 = 0x1 1870 } 1871 1872 mixin(uuid!(ID3D12RootSignatureDeserializer, "34AB647B-3CC8-46AC-841B-C0965645C046")); 1873 extern(C++) interface ID3D12RootSignatureDeserializer : IUnknown { 1874 const(D3D12_ROOT_SIGNATURE_DESC)* GetRootSignatureDesc(); 1875 } 1876 1877 1878 1879 extern(Windows) nothrow 1880 HRESULT D3D12SerializeRootSignature(const(D3D12_ROOT_SIGNATURE_DESC)* pRootSignature, 1881 D3D_ROOT_SIGNATURE_VERSION Version, 1882 ID3DBlob* ppBlob, 1883 ID3DBlob* ppErrorBlob); 1884 1885 alias PFN_D3D12_SERIALIZE_ROOT_SIGNATURE = extern(Windows) nothrow HRESULT function( 1886 const(D3D12_ROOT_SIGNATURE_DESC)* pRootSignature, 1887 D3D_ROOT_SIGNATURE_VERSION Version, 1888 ID3DBlob* ppBlob, 1889 ID3DBlob* ppErrorBlob); 1890 1891 1892 1893 extern(Windows) nothrow 1894 HRESULT D3D12CreateRootSignatureDeserializer(LPCVOID pSrcData, 1895 SIZE_T SrcDataSizeInBytes, 1896 REFIID pRootSignatureDeserializerInterface, 1897 void** ppRootSignatureDeserializer); 1898 1899 alias PFN_D3D12_CREATE_ROOT_SIGNATURE_DESERIALIZER = extern(Windows) nothrow HRESULT function( 1900 LPCVOID pSrcData, 1901 SIZE_T SrcDataSizeInBytes, 1902 REFIID pRootSignatureDeserializerInterface, 1903 void** ppRootSignatureDeserializer); 1904 1905 1906 struct D3D12_CPU_DESCRIPTOR_HANDLE { 1907 this(this) {} 1908 SIZE_T ptr; 1909 } 1910 1911 struct D3D12_GPU_DESCRIPTOR_HANDLE { 1912 this(this) {} 1913 UINT64 ptr; 1914 } 1915 1916 // If rects are supplied in D3D12_DISCARD_REGION, below, the resource 1917 // must have 2D subresources with all specified subresources the same dimension. 1918 struct D3D12_DISCARD_REGION { 1919 UINT NumRects; 1920 const(D3D12_RECT)* pRects; 1921 UINT FirstSubresource; 1922 UINT NumSubresources; 1923 } 1924 1925 alias D3D12_QUERY_HEAP_TYPE = uint; 1926 enum : D3D12_QUERY_HEAP_TYPE { 1927 D3D12_QUERY_HEAP_TYPE_OCCLUSION = 0, 1928 D3D12_QUERY_HEAP_TYPE_TIMESTAMP = 1, 1929 D3D12_QUERY_HEAP_TYPE_PIPELINE_STATISTICS = 2, 1930 D3D12_QUERY_HEAP_TYPE_SO_STATISTICS = 3 1931 } 1932 1933 struct D3D12_QUERY_HEAP_DESC { 1934 D3D12_QUERY_HEAP_TYPE Type; 1935 UINT Count; 1936 UINT NodeMask; 1937 } 1938 1939 alias D3D12_QUERY_TYPE = uint; 1940 enum : D3D12_QUERY_TYPE { 1941 D3D12_QUERY_TYPE_OCCLUSION = 0, 1942 D3D12_QUERY_TYPE_BINARY_OCCLUSION = 1, 1943 D3D12_QUERY_TYPE_TIMESTAMP = 2, 1944 D3D12_QUERY_TYPE_PIPELINE_STATISTICS = 3, 1945 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM0 = 4, 1946 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM1 = 5, 1947 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM2 = 6, 1948 D3D12_QUERY_TYPE_SO_STATISTICS_STREAM3 = 7 1949 } 1950 1951 alias D3D12_PREDICATION_OP = uint; 1952 enum : D3D12_PREDICATION_OP { 1953 D3D12_PREDICATION_OP_EQUAL_ZERO = 0, 1954 D3D12_PREDICATION_OP_NOT_EQUAL_ZERO = 1 1955 } 1956 1957 struct D3D12_QUERY_DATA_PIPELINE_STATISTICS { 1958 UINT64 IAVertices; 1959 UINT64 IAPrimitives; 1960 UINT64 VSInvocations; 1961 UINT64 GSInvocations; 1962 UINT64 GSPrimitives; 1963 UINT64 CInvocations; 1964 UINT64 CPrimitives; 1965 UINT64 PSInvocations; 1966 UINT64 HSInvocations; 1967 UINT64 DSInvocations; 1968 UINT64 CSInvocations; 1969 } 1970 1971 struct D3D12_QUERY_DATA_SO_STATISTICS { 1972 UINT64 NumPrimitivesWritten; 1973 UINT64 PrimitivesStorageNeeded; 1974 } 1975 1976 struct D3D12_STREAM_OUTPUT_BUFFER_VIEW { 1977 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 1978 UINT64 SizeInBytes; 1979 D3D12_GPU_VIRTUAL_ADDRESS BufferFilledSizeLocation; 1980 } 1981 1982 struct D3D12_DRAW_ARGUMENTS { 1983 UINT VertexCountPerInstance; 1984 UINT InstanceCount; 1985 UINT StartVertexLocation; 1986 UINT StartInstanceLocation; 1987 } 1988 1989 struct D3D12_DRAW_INDEXED_ARGUMENTS { 1990 UINT IndexCountPerInstance; 1991 UINT InstanceCount; 1992 UINT StartIndexLocation; 1993 INT BaseVertexLocation; 1994 UINT StartInstanceLocation; 1995 } 1996 1997 struct D3D12_DISPATCH_ARGUMENTS { 1998 UINT ThreadGroupCountX; 1999 UINT ThreadGroupCountY; 2000 UINT ThreadGroupCountZ; 2001 } 2002 2003 struct D3D12_VERTEX_BUFFER_VIEW { 2004 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 2005 UINT SizeInBytes; 2006 UINT StrideInBytes; 2007 } 2008 2009 struct D3D12_INDEX_BUFFER_VIEW { 2010 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation; 2011 UINT SizeInBytes; 2012 DXGI_FORMAT Format; 2013 } 2014 2015 alias D3D12_INDIRECT_ARGUMENT_TYPE = uint; 2016 enum : D3D12_INDIRECT_ARGUMENT_TYPE { 2017 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW = 0, 2018 D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED = D3D12_INDIRECT_ARGUMENT_TYPE_DRAW + 1, 2019 D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH = D3D12_INDIRECT_ARGUMENT_TYPE_DRAW_INDEXED + 1, 2020 D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW = D3D12_INDIRECT_ARGUMENT_TYPE_DISPATCH + 1, 2021 D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW = D3D12_INDIRECT_ARGUMENT_TYPE_VERTEX_BUFFER_VIEW + 1, 2022 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT = D3D12_INDIRECT_ARGUMENT_TYPE_INDEX_BUFFER_VIEW + 1, 2023 D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW = D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT + 1, 2024 D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW = D3D12_INDIRECT_ARGUMENT_TYPE_CONSTANT_BUFFER_VIEW + 1, 2025 D3D12_INDIRECT_ARGUMENT_TYPE_UNORDERED_ACCESS_VIEW = D3D12_INDIRECT_ARGUMENT_TYPE_SHADER_RESOURCE_VIEW + 1 2026 } 2027 2028 struct D3D12_INDIRECT_ARGUMENT_DESC { 2029 D3D12_INDIRECT_ARGUMENT_TYPE Type; 2030 union { 2031 struct { 2032 UINT Slot; 2033 } 2034 static struct _Constant { 2035 UINT RootParameterIndex; 2036 UINT DestOffsetIn32BitValues; 2037 UINT Num32BitValuesToSet; 2038 } 2039 static struct _ConstantBufferView { 2040 UINT RootParameterIndex; 2041 } 2042 static struct _ShaderResourceView { 2043 UINT RootParameterIndex; 2044 } 2045 static struct _UnorderedAccessView { 2046 UINT RootParameterIndex; 2047 } 2048 2049 _Constant Constant; 2050 _ConstantBufferView ConstantBufferView; 2051 _ShaderResourceView ShaderResourceView; 2052 _UnorderedAccessView UnorderedAccessView; 2053 } 2054 } 2055 2056 struct D3D12_COMMAND_SIGNATURE_DESC { 2057 UINT ByteStride; 2058 UINT NumArgumentDescs; 2059 const(D3D12_INDIRECT_ARGUMENT_DESC)* pArgumentDescs; 2060 UINT NodeMask; 2061 } 2062 2063 mixin(uuid!(ID3D12Pageable, "63ee58fb-1268-4835-86da-f008ce62f0d6")); 2064 extern(C++) interface ID3D12Pageable : ID3D12DeviceChild {} 2065 2066 mixin(uuid!(ID3D12Heap, "6b3b2502-6e51-45b3-90ee-9884265e8df3")); 2067 extern(C++) interface ID3D12Heap : ID3D12Pageable { 2068 2069 version(CORRECT_ABI) 2070 { 2071 D3D12_HEAP_DESC GetDesc(); 2072 } 2073 else 2074 { 2075 void GetDesc(D3D12_HEAP_DESC* outDesc); 2076 } 2077 2078 version(CORRECT_ABI){} 2079 else 2080 { 2081 final D3D12_HEAP_DESC GetDesc() 2082 { 2083 D3D12_HEAP_DESC temp; 2084 GetDesc(&temp); 2085 return temp; 2086 } 2087 } 2088 2089 2090 } 2091 2092 mixin(uuid!(ID3D12Resource, "696442be-a72e-4059-bc79-5b5c98040fad")); 2093 extern(C++) interface ID3D12Resource : ID3D12Pageable { 2094 HRESULT Map(UINT Subresource, 2095 const(D3D12_RANGE)*pReadRange, 2096 void** ppData); 2097 2098 void Unmap(UINT Subresource, 2099 const(D3D12_RANGE)* pWrittenRange); 2100 2101 version(CORRECT_ABI) 2102 { 2103 D3D12_RESOURCE_DESC GetDesc(); 2104 } 2105 else 2106 { 2107 void GetDesc(D3D12_RESOURCE_DESC* outDesc); 2108 } 2109 2110 D3D12_GPU_VIRTUAL_ADDRESS GetGPUVirtualAddress(); 2111 2112 HRESULT WriteToSubresource(UINT DstSubresource, 2113 const(D3D12_BOX)* pDstBox, 2114 const(void)* pSrcData, 2115 UINT SrcRowPitch, 2116 UINT SrcDepthPitch); 2117 2118 HRESULT ReadFromSubresource(void* pDstData, 2119 UINT DstRowPitch, 2120 UINT DstDepthPitch, 2121 UINT SrcSubresource, 2122 const(D3D12_BOX)* pSrcBox); 2123 2124 HRESULT GetHeapProperties(D3D12_HEAP_PROPERTIES* pHeapProperties, 2125 D3D12_HEAP_FLAGS* pHeapFlags); 2126 2127 2128 2129 version(CORRECT_ABI){} 2130 else 2131 { 2132 final D3D12_RESOURCE_DESC GetDesc() 2133 { 2134 D3D12_RESOURCE_DESC temp; 2135 GetDesc(&temp); 2136 return temp; 2137 } 2138 } 2139 } 2140 2141 mixin(uuid!(ID3D12CommandAllocator, "6102dee4-af59-4b09-b999-b44d73f09b24")); 2142 extern(C++) interface ID3D12CommandAllocator : ID3D12Pageable { 2143 HRESULT Reset(); 2144 } 2145 2146 mixin(uuid!(ID3D12Fence, "0a753dcf-c4d8-4b91-adf6-be5a60d95a76")); 2147 extern(C++) interface ID3D12Fence : ID3D12Pageable { 2148 UINT64 GetCompletedValue(); 2149 2150 HRESULT SetEventOnCompletion(UINT64 Value, HANDLE hEvent); 2151 2152 HRESULT Signal(UINT64 Value); 2153 } 2154 2155 mixin(uuid!(ID3D12PipelineState, "765a30f3-f624-4c6f-a828-ace948622445")); 2156 extern(C++) interface ID3D12PipelineState : ID3D12Pageable { 2157 HRESULT GetCachedBlob(ID3DBlob*ppBlob); 2158 } 2159 2160 mixin(uuid!(ID3D12DescriptorHeap, "8efb471d-616c-4f49-90f7-127bb763fa51")); 2161 extern(C++) interface ID3D12DescriptorHeap : ID3D12Pageable { 2162 2163 version(CORRECT_ABI) 2164 { 2165 D3D12_DESCRIPTOR_HEAP_DESC GetDesc(); 2166 2167 D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart(); 2168 2169 D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart(); 2170 } 2171 else 2172 { 2173 void GetDesc(D3D12_DESCRIPTOR_HEAP_DESC* outDesc); 2174 2175 void GetCPUDescriptorHandleForHeapStart(D3D12_CPU_DESCRIPTOR_HANDLE* outHandle); 2176 2177 void GetGPUDescriptorHandleForHeapStart(D3D12_GPU_DESCRIPTOR_HANDLE* outHandle); 2178 } 2179 2180 // ============================================================================== 2181 // Helpers for incorrect ABI below 2182 2183 version(CORRECT_ABI){} 2184 else 2185 { 2186 final D3D12_DESCRIPTOR_HEAP_DESC GetDesc() 2187 { 2188 D3D12_DESCRIPTOR_HEAP_DESC temp; 2189 GetDesc(&temp); 2190 return temp; 2191 } 2192 2193 final D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandleForHeapStart() 2194 { 2195 D3D12_CPU_DESCRIPTOR_HANDLE temp; 2196 GetCPUDescriptorHandleForHeapStart(&temp); 2197 return temp; 2198 } 2199 2200 final D3D12_GPU_DESCRIPTOR_HANDLE GetGPUDescriptorHandleForHeapStart() 2201 { 2202 D3D12_GPU_DESCRIPTOR_HANDLE temp; 2203 GetGPUDescriptorHandleForHeapStart(&temp); 2204 return temp; 2205 } 2206 } // version(CORRECT_ABI) else 2207 } 2208 2209 mixin(uuid!(ID3D12QueryHeap, "0d9658ae-ed45-469e-a61d-970ec583cab4")); 2210 extern(C++) interface ID3D12QueryHeap : ID3D12Pageable {} 2211 2212 mixin(uuid!(ID3D12CommandSignature, "c36a797c-ec80-4f0a-8985-a7b2475082d1")); 2213 extern(C++) interface ID3D12CommandSignature : ID3D12Pageable {} 2214 2215 mixin(uuid!(ID3D12CommandList, "7116d91c-e7e4-47ce-b8c6-ec8168f437e5")); 2216 extern(C++) interface ID3D12CommandList : ID3D12DeviceChild { 2217 2218 D3D12_COMMAND_LIST_TYPE GetType(); 2219 } 2220 2221 mixin(uuid!(ID3D12GraphicsCommandList, "5b160d0f-ac1b-4185-8ba8-b3ae42a5a455")); 2222 extern(C++) interface ID3D12GraphicsCommandList : ID3D12CommandList { 2223 HRESULT Close(); 2224 2225 HRESULT Reset(ID3D12CommandAllocator pAllocator, 2226 ID3D12PipelineState pInitialState); 2227 2228 void ClearState(ID3D12PipelineState pPipelineState); 2229 2230 void DrawInstanced( 2231 UINT VertexCountPerInstance, 2232 UINT InstanceCount, 2233 UINT StartVertexLocation, 2234 UINT StartInstanceLocation); 2235 2236 void DrawIndexedInstanced( 2237 UINT IndexCountPerInstance, 2238 UINT InstanceCount, 2239 UINT StartIndexLocation, 2240 INT BaseVertexLocation, 2241 UINT StartInstanceLocation); 2242 2243 void Dispatch( 2244 UINT ThreadGroupCountX, 2245 UINT ThreadGroupCountY, 2246 UINT ThreadGroupCountZ); 2247 2248 void CopyBufferRegion( 2249 ID3D12Resource pDstBuffer, 2250 UINT64 DstOffset, 2251 ID3D12Resource pSrcBuffer, 2252 UINT64 SrcOffset, 2253 UINT64 NumBytes); 2254 2255 void CopyTextureRegion( 2256 const(D3D12_TEXTURE_COPY_LOCATION)* pDst, 2257 UINT DstX, 2258 UINT DstY, 2259 UINT DstZ, 2260 const(D3D12_TEXTURE_COPY_LOCATION)* pSrc, 2261 const(D3D12_BOX)* pSrcBox); 2262 2263 void CopyResource( 2264 ID3D12Resource pDstResource, 2265 ID3D12Resource pSrcResource); 2266 2267 void CopyTiles( 2268 ID3D12Resource pTiledResource, 2269 const(D3D12_TILED_RESOURCE_COORDINATE)* pTileRegionStartCoordinate, 2270 const(D3D12_TILE_REGION_SIZE)* pTileRegionSize, 2271 ID3D12Resource pBuffer, 2272 UINT64 BufferStartOffsetInBytes, 2273 D3D12_TILE_COPY_FLAGS Flags); 2274 2275 void ResolveSubresource( 2276 ID3D12Resource pDstResource, 2277 UINT DstSubresource, 2278 ID3D12Resource pSrcResource, 2279 UINT SrcSubresource, 2280 DXGI_FORMAT Format); 2281 2282 void IASetPrimitiveTopology( 2283 D3D12_PRIMITIVE_TOPOLOGY PrimitiveTopology); 2284 2285 void RSSetViewports( 2286 UINT NumViewports, 2287 const(D3D12_VIEWPORT) *pViewports); 2288 2289 void RSSetScissorRects( 2290 UINT NumRects, 2291 const(D3D12_RECT)* pRects); 2292 2293 void OMSetBlendFactor( 2294 const(FLOAT)[4] BlendFactor); 2295 2296 void OMSetStencilRef( 2297 UINT StencilRef); 2298 2299 void SetPipelineState( 2300 ID3D12PipelineState pPipelineState); 2301 2302 void ResourceBarrier( 2303 UINT NumBarriers, 2304 const(D3D12_RESOURCE_BARRIER)* pBarriers); 2305 2306 void ExecuteBundle( 2307 ID3D12GraphicsCommandList pCommandList); 2308 2309 void SetDescriptorHeaps( 2310 UINT NumDescriptorHeaps, 2311 ID3D12DescriptorHeap *ppDescriptorHeaps); 2312 2313 void SetComputeRootSignature( 2314 ID3D12RootSignature pRootSignature); 2315 2316 void SetGraphicsRootSignature( 2317 ID3D12RootSignature pRootSignature); 2318 2319 void SetComputeRootDescriptorTable( 2320 UINT RootParameterIndex, 2321 D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); 2322 2323 void SetGraphicsRootDescriptorTable( 2324 UINT RootParameterIndex, 2325 D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor); 2326 2327 void SetComputeRoot32BitConstant( 2328 UINT RootParameterIndex, 2329 UINT SrcData, 2330 UINT DestOffsetIn32BitValues); 2331 2332 void SetGraphicsRoot32BitConstant( 2333 UINT RootParameterIndex, 2334 UINT SrcData, 2335 UINT DestOffsetIn32BitValues); 2336 2337 void SetComputeRoot32BitConstants( 2338 UINT RootParameterIndex, 2339 UINT Num32BitValuesToSet, 2340 const(void)* pSrcData, 2341 UINT DestOffsetIn32BitValues); 2342 2343 void SetGraphicsRoot32BitConstants( 2344 UINT RootParameterIndex, 2345 UINT Num32BitValuesToSet, 2346 const(void) *pSrcData, 2347 UINT DestOffsetIn32BitValues); 2348 2349 void SetComputeRootConstantBufferView( 2350 UINT RootParameterIndex, 2351 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2352 2353 void SetGraphicsRootConstantBufferView( 2354 UINT RootParameterIndex, 2355 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2356 2357 void SetComputeRootShaderResourceView( 2358 UINT RootParameterIndex, 2359 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2360 2361 void SetGraphicsRootShaderResourceView( 2362 UINT RootParameterIndex, 2363 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2364 2365 void SetComputeRootUnorderedAccessView( 2366 UINT RootParameterIndex, 2367 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2368 2369 void SetGraphicsRootUnorderedAccessView( 2370 UINT RootParameterIndex, 2371 D3D12_GPU_VIRTUAL_ADDRESS BufferLocation); 2372 2373 void IASetIndexBuffer( 2374 const(D3D12_INDEX_BUFFER_VIEW)* pView); 2375 2376 void IASetVertexBuffers( 2377 UINT StartSlot, 2378 UINT NumViews, 2379 const(D3D12_VERTEX_BUFFER_VIEW)* pViews); 2380 2381 void SOSetTargets( 2382 UINT StartSlot, 2383 UINT NumViews, 2384 const(D3D12_STREAM_OUTPUT_BUFFER_VIEW)* pViews); 2385 2386 void OMSetRenderTargets( 2387 UINT NumRenderTargetDescriptors, 2388 const(D3D12_CPU_DESCRIPTOR_HANDLE)* pRenderTargetDescriptors, 2389 BOOL RTsSingleHandleToDescriptorRange, 2390 const(D3D12_CPU_DESCRIPTOR_HANDLE)* pDepthStencilDescriptor); 2391 2392 void ClearDepthStencilView( 2393 D3D12_CPU_DESCRIPTOR_HANDLE DepthStencilView, 2394 D3D12_CLEAR_FLAGS ClearFlags, 2395 FLOAT Depth, 2396 UINT8 Stencil, 2397 UINT NumRects, 2398 const(D3D12_RECT)* pRects); 2399 2400 void ClearRenderTargetView( 2401 D3D12_CPU_DESCRIPTOR_HANDLE RenderTargetView, 2402 const(FLOAT)* ColorRGBA, 2403 UINT NumRects, 2404 const(D3D12_RECT)* pRects); 2405 2406 void ClearUnorderedAccessViewUint( 2407 D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, 2408 D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, 2409 ID3D12Resource pResource, 2410 const(UINT)* Values, 2411 UINT NumRects, 2412 const(D3D12_RECT)* pRects); 2413 2414 void ClearUnorderedAccessViewFloat( 2415 D3D12_GPU_DESCRIPTOR_HANDLE ViewGPUHandleInCurrentHeap, 2416 D3D12_CPU_DESCRIPTOR_HANDLE ViewCPUHandle, 2417 ID3D12Resource pResource, 2418 const(FLOAT)* Values, 2419 UINT NumRects, 2420 const(D3D12_RECT)* pRects); 2421 2422 void DiscardResource( 2423 ID3D12Resource pResource, 2424 const(D3D12_DISCARD_REGION)* pRegion); 2425 2426 void BeginQuery( 2427 ID3D12QueryHeap pQueryHeap, 2428 D3D12_QUERY_TYPE Type, 2429 UINT Index); 2430 2431 void EndQuery( 2432 ID3D12QueryHeap pQueryHeap, 2433 D3D12_QUERY_TYPE Type, 2434 UINT Index); 2435 2436 void ResolveQueryData( 2437 ID3D12QueryHeap pQueryHeap, 2438 D3D12_QUERY_TYPE Type, 2439 UINT StartIndex, 2440 UINT NumQueries, 2441 ID3D12Resource pDestinationBuffer, 2442 UINT64 AlignedDestinationBufferOffset); 2443 2444 void SetPredication( 2445 ID3D12Resource pBuffer, 2446 UINT64 AlignedBufferOffset, 2447 D3D12_PREDICATION_OP Operation); 2448 2449 void SetMarker( 2450 UINT Metadata, 2451 const(void)* pData, 2452 UINT Size); 2453 2454 void BeginEvent( 2455 UINT Metadata, 2456 const(void)* pData, 2457 UINT Size); 2458 2459 void EndEvent(); 2460 2461 void ExecuteIndirect( 2462 ID3D12CommandSignature pCommandSignature, 2463 UINT MaxCommandCount, 2464 ID3D12Resource pArgumentBuffer, 2465 UINT64 ArgumentBufferOffset, 2466 ID3D12Resource pCountBuffer, 2467 UINT64 CountBufferOffset); 2468 } 2469 2470 mixin(uuid!(ID3D12CommandQueue, "0ec870a6-5d7e-4c22-8cfc-5baae07616ed")); 2471 extern(C++) interface ID3D12CommandQueue : ID3D12Pageable { 2472 void UpdateTileMappings( 2473 ID3D12Resource pResource, 2474 UINT NumResourceRegions, 2475 const(D3D12_TILED_RESOURCE_COORDINATE)* pResourceRegionStartCoordinates, 2476 const(D3D12_TILE_REGION_SIZE)* pResourceRegionSizes, 2477 ID3D12Heap pHeap, 2478 UINT NumRanges, 2479 const(D3D12_TILE_RANGE_FLAGS)* pRangeFlags, 2480 const(UINT)* pHeapRangeStartOffsets, 2481 const(UINT)* pRangeTileCounts, 2482 D3D12_TILE_MAPPING_FLAGS Flags); 2483 2484 void CopyTileMappings( 2485 ID3D12Resource pDstResource, 2486 const(D3D12_TILED_RESOURCE_COORDINATE)* pDstRegionStartCoordinate, 2487 ID3D12Resource pSrcResource, 2488 const(D3D12_TILED_RESOURCE_COORDINATE)* pSrcRegionStartCoordinate, 2489 const(D3D12_TILE_REGION_SIZE)* pRegionSize, 2490 D3D12_TILE_MAPPING_FLAGS Flags); 2491 2492 void ExecuteCommandLists( 2493 UINT NumCommandLists, 2494 const(ID3D12CommandList)* ppCommandLists); 2495 2496 void SetMarker( 2497 UINT Metadata, 2498 const(void)* pData, 2499 UINT Size); 2500 2501 void BeginEvent( 2502 UINT Metadata, 2503 const(void)* pData, 2504 UINT Size); 2505 2506 void EndEvent(); 2507 2508 HRESULT Signal( 2509 ID3D12Fence pFence, 2510 UINT64 Value); 2511 2512 HRESULT Wait( 2513 ID3D12Fence pFence, 2514 UINT64 Value); 2515 2516 HRESULT GetTimestampFrequency( 2517 UINT64* pFrequency); 2518 2519 HRESULT GetClockCalibration( 2520 UINT64* pGpuTimestamp, 2521 UINT64* pCpuTimestamp); 2522 2523 version(CORRECT_ABI) 2524 { 2525 D3D12_COMMAND_QUEUE_DESC GetDesc(); 2526 } 2527 else 2528 { 2529 void GetDesc(D3D12_COMMAND_QUEUE_DESC* outDesc); 2530 } 2531 2532 version(CORRECT_ABI){} 2533 else 2534 { 2535 final D3D12_COMMAND_QUEUE_DESC GetDesc() 2536 { 2537 D3D12_COMMAND_QUEUE_DESC temp; 2538 GetDesc(&temp); 2539 return temp; 2540 } 2541 } 2542 2543 } 2544 2545 mixin(uuid!(ID3D12Device, "189819f1-1db6-4b57-be54-1821339b85f7")); 2546 extern(C++) interface ID3D12Device : ID3D12Object { 2547 UINT GetNodeCount(); 2548 2549 HRESULT CreateCommandQueue( 2550 const(D3D12_COMMAND_QUEUE_DESC)* pDesc, 2551 REFIID riid, 2552 ID3D12CommandQueue* ppCommandQueue); 2553 2554 HRESULT CreateCommandAllocator( 2555 D3D12_COMMAND_LIST_TYPE type, 2556 REFIID riid, 2557 ID3D12CommandAllocator* ppCommandAllocator); 2558 2559 HRESULT CreateGraphicsPipelineState( 2560 const(D3D12_GRAPHICS_PIPELINE_STATE_DESC)* pDesc, 2561 REFIID riid, 2562 ID3D12PipelineState* ppPipelineState); 2563 2564 HRESULT CreateComputePipelineState( 2565 const(D3D12_COMPUTE_PIPELINE_STATE_DESC)* pDesc, 2566 REFIID riid, 2567 ID3D12PipelineState* ppPipelineState); 2568 2569 HRESULT CreateCommandList( 2570 UINT nodeMask, 2571 D3D12_COMMAND_LIST_TYPE type, 2572 ID3D12CommandAllocator pCommandAllocator, 2573 ID3D12PipelineState pInitialState, 2574 REFIID riid, 2575 ID3D12CommandList* ppCommandList); 2576 2577 HRESULT CheckFeatureSupport( 2578 D3D12_FEATURE Feature, 2579 void* pFeatureSupportData, 2580 UINT FeatureSupportDataSize); 2581 2582 HRESULT CreateDescriptorHeap( 2583 const(D3D12_DESCRIPTOR_HEAP_DESC)* pDescriptorHeapDesc, 2584 REFIID riid, 2585 ID3D12DescriptorHeap* ppvHeap); 2586 2587 UINT GetDescriptorHandleIncrementSize( 2588 D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapType); 2589 2590 HRESULT CreateRootSignature( 2591 UINT nodeMask, 2592 const(void)* pBlobWithRootSignature, 2593 SIZE_T blobLengthInBytes, 2594 REFIID riid, 2595 ID3D12RootSignature* ppvRootSignature); 2596 2597 void CreateConstantBufferView( 2598 const(D3D12_CONSTANT_BUFFER_VIEW_DESC)* pDesc, 2599 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2600 2601 void CreateShaderResourceView( 2602 ID3D12Resource pResource, 2603 const(D3D12_SHADER_RESOURCE_VIEW_DESC)* pDesc, 2604 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2605 2606 void CreateUnorderedAccessView( 2607 ID3D12Resource pResource, 2608 ID3D12Resource pCounterResource, 2609 const(D3D12_UNORDERED_ACCESS_VIEW_DESC)* pDesc, 2610 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2611 2612 void CreateRenderTargetView( 2613 ID3D12Resource pResource, 2614 const(D3D12_RENDER_TARGET_VIEW_DESC)* pDesc, 2615 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2616 2617 void CreateDepthStencilView( 2618 ID3D12Resource pResource, 2619 const(D3D12_DEPTH_STENCIL_VIEW_DESC)* pDesc, 2620 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2621 2622 void CreateSampler( 2623 const(D3D12_SAMPLER_DESC)* pDesc, 2624 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptor); 2625 2626 void CopyDescriptors( 2627 UINT NumDestDescriptorRanges, 2628 const(D3D12_CPU_DESCRIPTOR_HANDLE)* pDestDescriptorRangeStarts, 2629 const(UINT)* pDestDescriptorRangeSizes, 2630 UINT NumSrcDescriptorRanges, 2631 const(D3D12_CPU_DESCRIPTOR_HANDLE)* pSrcDescriptorRangeStarts, 2632 const(UINT)* pSrcDescriptorRangeSizes, 2633 D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); 2634 2635 void CopyDescriptorsSimple( 2636 UINT NumDescriptors, 2637 D3D12_CPU_DESCRIPTOR_HANDLE DestDescriptorRangeStart, 2638 D3D12_CPU_DESCRIPTOR_HANDLE SrcDescriptorRangeStart, 2639 D3D12_DESCRIPTOR_HEAP_TYPE DescriptorHeapsType); 2640 2641 version(CORRECT_ABI) 2642 { 2643 D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo( 2644 UINT visibleMask, 2645 UINT numResourceDescs, 2646 const(D3D12_RESOURCE_DESC)* pResourceDescs); 2647 2648 D3D12_HEAP_PROPERTIES GetCustomHeapProperties( 2649 UINT nodeMask, 2650 D3D12_HEAP_TYPE heapType); 2651 } 2652 else 2653 { 2654 void GetResourceAllocationInfo(D3D12_RESOURCE_ALLOCATION_INFO* outDesc, 2655 UINT visibleMask, 2656 UINT numResourceDescs, 2657 const(D3D12_RESOURCE_DESC)* pResourceDescs); 2658 2659 void GetCustomHeapProperties(D3D12_HEAP_PROPERTIES* outDesc, 2660 UINT nodeMask, 2661 D3D12_HEAP_TYPE heapType); 2662 } 2663 2664 2665 HRESULT CreateCommittedResource( 2666 const(D3D12_HEAP_PROPERTIES)* pHeapProperties, 2667 D3D12_HEAP_FLAGS HeapFlags, 2668 const(D3D12_RESOURCE_DESC)* pResourceDesc, 2669 D3D12_RESOURCE_STATES InitialResourceState, 2670 const(D3D12_CLEAR_VALUE)* pOptimizedClearValue, 2671 REFIID riidResource, 2672 ID3D12Resource* ppvResource); 2673 2674 HRESULT CreateHeap( 2675 const(D3D12_HEAP_DESC)* pDesc, 2676 REFIID riid, 2677 ID3D12Heap* ppvHeap); 2678 2679 HRESULT CreatePlacedResource( 2680 ID3D12Heap pHeap, 2681 UINT64 HeapOffset, 2682 const(D3D12_RESOURCE_DESC)* pDesc, 2683 D3D12_RESOURCE_STATES InitialState, 2684 const(D3D12_CLEAR_VALUE)* pOptimizedClearValue, 2685 REFIID riid, 2686 ID3D12Resource* ppvResource); 2687 2688 HRESULT CreateReservedResource( 2689 const(D3D12_RESOURCE_DESC)* pDesc, 2690 D3D12_RESOURCE_STATES InitialState, 2691 const(D3D12_CLEAR_VALUE)* pOptimizedClearValue, 2692 REFIID riid, 2693 ID3D12Resource* ppvResource); 2694 2695 HRESULT CreateSharedHandle( 2696 ID3D12DeviceChild pObject, 2697 const(SECURITY_ATTRIBUTES)* pAttributes, 2698 DWORD Access, 2699 LPCWSTR Name, 2700 HANDLE* pHandle); 2701 2702 HRESULT OpenSharedHandle( 2703 HANDLE NTHandle, 2704 REFIID riid, 2705 void** ppvObj); 2706 2707 HRESULT OpenSharedHandleByName( 2708 LPCWSTR Name, 2709 DWORD Access, 2710 HANDLE* pNTHandle); 2711 2712 HRESULT MakeResident( 2713 UINT NumObjects, 2714 const(ID3D12Pageable)* ppObjects); 2715 2716 HRESULT Evict( 2717 UINT NumObjects, 2718 const(ID3D12Pageable)* ppObjects); 2719 2720 HRESULT CreateFence( 2721 UINT64 InitialValue, 2722 D3D12_FENCE_FLAGS Flags, 2723 REFIID riid, 2724 ID3D12Fence* ppFence); 2725 2726 HRESULT GetDeviceRemovedReason(); 2727 2728 void GetCopyableFootprints( 2729 const(D3D12_RESOURCE_DESC)* pResourceDesc, 2730 UINT FirstSubresource, 2731 UINT NumSubresources, 2732 UINT64 BaseOffset, 2733 D3D12_PLACED_SUBRESOURCE_FOOTPRINT* pLayouts, 2734 UINT* pNumRows, 2735 UINT64* pRowSizeInBytes, 2736 UINT64* pTotalBytes); 2737 2738 HRESULT CreateQueryHeap( 2739 const(D3D12_QUERY_HEAP_DESC)* pDesc, 2740 REFIID riid, 2741 ID3D12QueryHeap* ppvHeap); 2742 2743 HRESULT SetStablePowerState( 2744 BOOL Enable); 2745 2746 HRESULT CreateCommandSignature( 2747 const(D3D12_COMMAND_SIGNATURE_DESC)* pDesc, 2748 ID3D12RootSignature pRootSignature, 2749 REFIID riid, 2750 ID3D12CommandSignature* ppvCommandSignature); 2751 2752 void GetResourceTiling( 2753 ID3D12Resource pTiledResource, 2754 UINT* pNumTilesForEntireResource, 2755 D3D12_PACKED_MIP_INFO* pPackedMipDesc, 2756 D3D12_TILE_SHAPE* pStandardTileShapeForNonPackedMips, 2757 UINT* pNumSubresourceTilings, 2758 UINT FirstSubresourceTilingToGet, 2759 D3D12_SUBRESOURCE_TILING* pSubresourceTilingsForNonPackedMips); 2760 2761 LUID GetAdapterLuid(); 2762 2763 2764 version(CORRECT_ABI){} 2765 else 2766 { 2767 final D3D12_RESOURCE_ALLOCATION_INFO GetResourceAllocationInfo( 2768 UINT visibleMask, 2769 UINT numResourceDescs, 2770 const(D3D12_RESOURCE_DESC)* pResourceDescs) 2771 { 2772 D3D12_RESOURCE_ALLOCATION_INFO temp; 2773 GetResourceAllocationInfo(&temp, visibleMask, numResourceDescs, pResourceDescs); 2774 return temp; 2775 } 2776 2777 final D3D12_HEAP_PROPERTIES GetCustomHeapProperties( 2778 UINT nodeMask, 2779 D3D12_HEAP_TYPE heapType) 2780 { 2781 D3D12_HEAP_PROPERTIES temp; 2782 GetCustomHeapProperties(nodeMask, heapType); 2783 return temp; 2784 } 2785 } 2786 } 2787 2788 struct D3D12_SUBRESOURCE_DATA { 2789 const(void)* pData; 2790 LONG_PTR RowPitch; 2791 LONG_PTR SlicePitch; 2792 } 2793 2794 struct D3D12_MEMCPY_DEST { 2795 void* pData; 2796 SIZE_T RowPitch; 2797 SIZE_T SlicePitch; 2798 } 2799 2800 /////////////////////////////////////////////////////////////////////////// 2801 // D3D12CreateDevice 2802 // ------------------ 2803 // 2804 // pAdapter 2805 // If NULL, D3D12CreateDevice will choose the primary adapter. 2806 // If non-NULL, D3D12CreateDevice will use the provided adapter. 2807 // MinimumFeatureLevel 2808 // The minimum feature level required for successful device creation. 2809 // riid 2810 // The interface IID of the device to be returned. Expected: ID3D12Device. 2811 // ppDevice 2812 // Pointer to returned interface. May be NULL. 2813 // 2814 // Return Values 2815 // Any of those documented for 2816 // CreateDXGIFactory1 2817 // IDXGIFactory::EnumAdapters 2818 // D3D12CreateDevice 2819 // 2820 /////////////////////////////////////////////////////////////////////////// 2821 2822 2823 extern(Windows) nothrow HRESULT D3D12CreateDevice( 2824 IUnknown pAdapter, 2825 D3D_FEATURE_LEVEL MinimumFeatureLevel, 2826 REFIID riid, // Expected: ID3D12Device 2827 ID3D12Device *ppDevice); 2828 2829 extern(Windows) nothrow HRESULT D3D12GetDebugInterface( 2830 REFIID riid, 2831 void** ppvDebug); 2832 2833 2834 alias PFN_D3D12_CREATE_DEVICE = extern(Windows) nothrow HRESULT function( 2835 IUnknown pAdapter, 2836 D3D_FEATURE_LEVEL MinimumFeatureLevel, 2837 REFIID riid, // Expected: ID3D12Device 2838 ID3D12Device *ppDevice); 2839 2840 alias PFN_D3D12_GET_DEBUG_INTERFACE = extern(Windows) nothrow HRESULT function( 2841 REFIID riid, 2842 void** ppvDebug); 2843